为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里
最大的好处是大大提高了代码的可维护性。
编写代码不必从零开
始。当一个模块编写完毕,就可以被其他地方引用
使用模块还可以避免函数名和变量名冲突
,尽量不要与内置函数名字冲突。
?为了避免模块
名冲突,Python 又引入了按目录来组织模块的方法,称为包(Package
每一个包目录下面都会有一个__init__.py 的文件,这个文件是
必须存在的,否则,Python 就把这个目录当成普通目录,而不是一个包。
__init__.py 可以是空文件,也可以有 Python 代码,因为__init__.py 本
身就是一个模块,而它的模块名就是 mycompany
自己创建模块时要注意命名,不能和 Python 自带的模块名称冲突
sys 模块有一个 argv 变量,用 list 存储了命令行的所有参数。argv 至少
有一个元素,因为第一个参数永远是该.py 文件的名称,
这种 if 测试可以让一个模块通过命令行运行时执行一
些额外的代码,最常见的就是运行测试。
if __name__=='__main__': test()
类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,
比如上面的__author__,__name__就是特殊变量
模块定义的文档注释也可以用特殊变量__doc__访问
类似_xxx 和__xxx 这样的函数或变量就是非公开的(private),不应该被
直接引用
外部不需要引用的函数全部定义成 private,只有外部需要引用的函数才
定义为 public。
也是一种非常有用的代码封装和抽象的方法
之所以我们说,private 函数和变量“不应该”被直接引用,而不是“不能”
被直接引用,是因为 Python 并没有一种方法可以完全限制访问 private
函数或变量,但是,从编程习惯上不应该引用 private 函数或变量。
,Python 解释器会搜索当前目录、所有已安装的内置模块和
第三方模块,搜索路径存放在 sys 模块的 path 变量中:
一是直接修改 sys.path,添加要搜索的目录:
>>> import sys >>> sys.path.append('/Users/michael/my_py_scripts')
这种方法是在运行时修改,运行结束后失效。
第二种方法是设置环境变量 PYTHONPATH,该环境变量的内容会被自动添
加到模块搜索路径中。设置方式与设置 Path 环境变量类似。注意只需
要添加你自己的搜索路径,Python 自己本身的搜索路径不受影响