首页 > 代码库 > Python的模块,模块的使用、安装,别名,作用域等概念

Python的模块,模块的使用、安装,别名,作用域等概念

所谓的模块就是将不同功能的函数分别放到不同的文件中,这样不仅有利于函数的维护,也方便了函数的调用。在Python中,一个.py文件就是一个模块(Module)。
在模块的上层有一个叫做包(Package)的目录。此目录的目的是避免模块的重名。

引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py模块的名字就变成了mycompany.abc,类似的,xyz.py的模块名变成了mycompany.xyz

请注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompany

使用模块
使用模块之前首先要导包,也就是导入你需要用到的模块。使用import关键字导包。下边就用写一个标准的python模块。
 
 1 #!/usr/bin/evn python 2 # _*_ encoding:utf-8_*_ 3   4 this is a test module 5   6 __author__ = six day 7   8 import sys 9  10 def test():11     args = sys.argv12     if len(args) == 1:13         print hello world,code changing world14     elif len(args) == 2:15         print Hello, %s! % args[1]16     else:17         print Too many arguments!18  19 if __name__ == __main__:20     test()

第1行和第2行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码;

第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;

第6行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;

以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。

后面开始就是真正的代码部分。

最后,注意到这两行代码:

if __name__==__main__:    test()

 

当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。

别名

导入模块时,还可以使用别名,这样,可以在运行时根据当前环境选择最合适的模块。比如Python标准库一般会提供StringIOcStringIO两个库,这两个库的接口和功能是一样的,但是cStringIO是C写的,速度更快,所以,你会经常看到这样的写法:

try:    import cStringIO as StringIOexcept ImportError: # 导入失败会捕获到ImportError    import StringIO

这样就可以优先导入cStringIO。如果有些平台不提供cStringIO,还可以降级使用StringIO。导入cStringIO时,用import ... as ...指定了别名StringIO,因此,后续代码引用StringIO即可正常工作。

还有类似simplejson这样的库,在Python 2.6之前是独立的第三方库,从2.6开始内置,所以,会有这样的写法:

try:    import json # python >= 2.6except ImportError:    import simplejson as json # python <= 2.5

由于Python是动态语言,函数签名一致接口就一样,因此,无论导入哪个模块后续代码都能正常工作。
作用域
正常的函数和变量是公开的,可以直接被引用,称为public,比如:abcx123PI等;
类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc等;
类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author____name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;
外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。
 
安装第三方模块
 

在Python中,安装第三方模块,是通过setuptools这个工具完成的。

如果你正在使用Mac或Linux,安装setuptools本身这个步骤就可以跳过了。

如果你正在使用Windows,请首先从这个地址下载ez_setup.py

https://pypi.python.org/pypi/setuptools#windows

安装方法详见下边的连接
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868200214529634268c5b3b45b3a3ba1cd81a251a3b000
 
 
 
 
 
 

Python的模块,模块的使用、安装,别名,作用域等概念