• 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.argv
    12     if len(args) == 1:
    13         print 'hello world,code changing world'
    14     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 StringIO
    except ImportError: # 导入失败会捕获到ImportError
        import StringIO

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

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

    try:
        import json # python >= 2.6
    except 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

    安装方法详见下边的连接
     
     
     
     
     
     
  • 相关阅读:
    第九周作业
    第八周作业
    第七周作业
    作业2
    作业1
    2019春总结作业
    第十四周总结
    十二周编程总结
    十一周编程总结
    第十周作业
  • 原文地址:https://www.cnblogs.com/6tian/p/4096668.html
Copyright © 2020-2023  润新知