Python学习笔记(模块)

模块
1、Python中一个.py文件就是一个模块,使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量可以分别存在不同的模块中。
2、为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。
      例子:
mycompany
 ├─ web
 │  ├─ __init__.py
 │  ├─ utils.py
 │  └─ www.py
 ├─ __init__.py
 ├─ abc.py
 └─ utils.py
       每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,__init__.py本身就是一个模块,而它的模块名就是mycompany和mycompany.web。
        www.py的模块名就是mycompany.web.www,两个文件utils.py的模块名分别是mycompany.utils和mycompany.web.utils
使用模块
1、定义一个模块
     例子:
hello模块
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '     #模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档
                               #注释

__author__ = 'Michael Liao'    #作者

import sys  #引入sys模块

def test():
    args = sys.argv     #sys的argv变量,用list存储了命令行的所有参数。argv至少有一个
                                 #元素,因为第一个参数永远是该.py文件的名称。运行python3 
                                 #hello.py获得的sys.argv就是['hello.py']
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    test()
2、特殊变量
     类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量。特殊变量__name__,当在命令行运行hello模块时,__name__置为__main__,其他地方导入该hello模块时,__name__不为__main__。
     类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用。从编程习惯上不应该引用private函数或变量。

评论