Python模块的使用

模块是Python组织代码的基本方式。Python的脚本都是用扩展名py的文本文件来保存的,一个脚本可以单独运行,也可以导入另一个脚本中运行。我们称导入其他脚本中运行的脚本为模块(module)。

1、脚本的导入方式

模块的名称和脚本名称相同,如果在一个名为operation.py的文件中定义了加减乘除等四种操作运算函数:

operation.py:
#!/usr/bin/python
#-*-coding:utf-8-*-
def jia(a,b):
    return a+b 

def jian(a,b):
    return a-b 

def cheng(a,b):
    return a*b 

def chu(a,b):
    return a/b

可以用下面多种方式来引入模块,使用模块中定义的函数:

(1)import operation导入整个模块

#!/usr/bin/python
#-*-coding:utf-8-*-
import operation
print operation.jia(2,3)

$ python test.py
5
$ 

(2)from operation import *导入模块中的所有元素

#!/usr/bin/python
#-*-coding:utf-8-*-
from operation import *
print jia(2,3)

$ python test.py
5
$ 

这样,在每次使用模块中的元素的时候,就不用每次都加上模块名了。

(3)from operation import jia, jian导入模块中指定的元素

#!/usr/bin/python
#-*-coding:utf-8-*-
from operation import jia, jian
print jia(2,3)
print jian(2,3)

$ python test.py
5
-1
$ 

这样,同样也不用每次使用被引用模块中的元素的时候写模块名,而且区别与上面的导入所有的方式,这种方式会尽可能减少被引入模块中元素和引入脚本中对象名称冲突的可能性。

(4)import operation as op在引入脚本中重命名模块

#!/usr/bin/python
#-*-coding:utf-8-*-
import operation as op
print op.jia(2,3)
print op.jian(2,3)

$ python test.py
5
-1
$ 

这样,脚本代码的可读性就会提高很多。

2、模块的引入规范

一般在脚本的开头引入所有需要的模块,并且各种模块的顺序建议大致按照如下:

  • python标准模块
  • 第三方模块
  • 程序自定义模块

当然,也可以在函数内部导入模块,这样被导入的模块作用域是局部的。

3、模块的搜索顺序

对于Python脚本中导入的模块,python会在sys.path所指定的路径中,依次顺序需找被导入的模块。sys.path在脚本执行时动态生成,主要是由下面三部分组成,python会在下面三种路径中依次寻找被导入的模块:

  • 脚本执行的位置,即当前路径
  • 环境变量(即.bash_profile)中的PYTHONPATH
  • 安装python时的依赖位置

下面展示了我机器上的sys.path变量的值:

#!/usr/bin/python
#-*-coding:utf-8-*-
import sys
for p in sys.path:
    print p
$ python test.py
/home/ubuntu/recommendation/inverted_index
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
$ 

3、对象持久化模块的例子

下面是一个对pickle模块进行封装得到的一个内存对象持久化的模块,能使我们更加方便地使用picle对python内存中的对象进行持久化和恢复。

object_persistence.py:
#!/usr/bin/python
#-*-coding:utf-8-*-
import cPickle as pickle

def dump2file(obj, file_name):
    '''
    dump the obj_name object into a file named as file_name on disk.
    '''
    f = open(file_name, "wb", True)
    pickle.dump(obj, f)
    f.close()
    return True

def restore_from_file(file_name):
    '''
    restore the object in the file named as file_name on disk, return as the returning value of this function
    '''
    f = open(file_name,"rb")
    obj = pickle.load(f)
    f.close()
    return obj 

if __name__ == "__main__":
    a = {"a":[1,2,3],"b":[4,5,6]}
    dump2file(a,"test_a.dat")
    print "The structure has been dumped to file."
    print restore_from_file("test_a.dat")
    print "Reading finished successfully."

module_try.py:
#!/usr/bin/python
#-*-coding:utf-8-*-
from object_persistence import restore_from_file, dump2file

if __name__ == "__main__":
    #read from the file
    a = {'a': [1, 2, 3], 'b': [4, 5, 6]}
    if dump2file(a,"test_a.dat"):
        print "The object has been dump to file on disk."
    print "------Restoring and print------"
    print restore_from_file("test_a.dat")
    print "restore over!"

$ python module_try.py
The object has been dump to file on disk.
------Restoring and print------
{'a': [1, 2, 3], 'b': [4, 5, 6]}
restore over!
$ 

好了,就到这儿了。^_^

时间: 2024-11-08 20:48:59

Python模块的使用的相关文章

python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = False   def check_log(func): def inner(): res = func() if LOGIN_INFO: print('验证成功!') return res else: print('验证失败!') return inner   def check_admin(func)

Python模块的交叉引用问题分析

实际项目中遇到python模块相互引用问题,查资料,说是通过import局部导入的方式可以避免错误,资料如附录所述. 但更改后测试还是会出错,很疑惑!? 如果哪位读者有好的解决方法,敬请留言说明,谢谢. 所以,最好的方法是不进行交叉引用,如果需要就单独分一个模块出来. 附录:Python模块的交叉引用问题解读:How can I have modules that mutually import each other? 有下面两个文件相互引用,Python解释器报错. foo.py: from

python模块以及导入出现ImportError: No module named 'xxx'问题

python模块以及导入出现ImportError: No module named 'xxx'问题 python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模 块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用 如果你要使用的模块(py文件)和当前模块在同一目录,只要import相应的文件名就好,比 如在a.py中使用b.py:  import b 但是如果要import一个不同目录的文件(例如b.py)该怎么做

python模块搜索路径

1.电脑版 (1).python安装目录中\Lib\site-packages\下建立*.pth文件,写入模块路径 (2).添加环境变量:变量名:pythonpath;变量值:模块(文件夹)路径 ,若有多个,用半角分号";"隔开 2.手机版 在resource\site.py文件中添加代码段 import syssys.path.append("模块(文件夹)路径") 发现:第一个参数都是C:\\resource 我的理解: 程序安装盘下的site.py指定模块路径

4.python模块

python 字符串 一.注释 在python中的注释分为单行注释和多行注释    (1)单行注释:为在语句的前边加"#" 例子: #!/usr/bin/env python a = 123 print a #print a #print a #print a 执行结果如下: [[email protected] ~]# python a.py 123  (2)多行注释:可以用3对单引号(比如:''' 注释内容''') 或是3对双引号(比如:"""注释内容

使用 from import方法导入Python模块

比如我们导入一个数学计算的模块 math: >>> import math>>> print math<module 'math' (built-in)>>>>>>> print math.pi #导出圆周率的值3.14159265359>>> 我们导入math模块,在python模块学习中我们会知道,这样做会得到名math的对象,这个模块对象包含了pi这样的常量,以及一些其它的方法. 我们如果直接访问

Python 八、Python模块

一.python文件概述 1.python模块概述 可以将代码量较大的程序分割成多个有组织的.彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块 模块在物理形势上表现为以.py结尾的代码文件 一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件 模块的文件名就是模块的名字加上扩展名(.py) 每个模块都有自己的名称空间 python允许导入其它模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统 python中,模块也是对象 在一个模块的顶层定义的所有

python 学习第五天,python模块

一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py结尾的python文件(文件名:test.py,对应的模块名:test) (2)包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件) 2,导入的方法 (1)import module_name导入某个模块 (2)import module_name,module2_

七、Python模块和包

Python模块 Python模块是组织代码的基本方式 Python的脚本都是用扩展名为py的文本文件保存的,一个脚本可以单独运行,也可以导入另一个脚本中运行.当脚本被导入运行时,将其称为模块 cat test.py #!/usr/bin/python #coding:utf-8 from __future__ import division def a(x,y): print x+y def b(x,y): print x*y cat new.py #!/usr/bin/python impo

如何安装python模块

在python编程语言中,我们一般会用到python模块,如chardet.pygame,这些模块不包含在python的默认代码中,需要从外部下载并安装.有些模块提供了自动安装的文件,比如pygame的Windows版本,直接双击安装就可以.但大多数模块没有提供这样的安装方式,有些同学没能成功安装而导致无法在程序中引入模块.在这里,介绍一下python模块http://www.maiziedu.com/course/python/393-4380/几种常见的安装方法.   1. 直接copy 下