复习5

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里

最大的好处是大大提高了代码的可维护性。

编写代码不必从零开
始。当一个模块编写完毕,就可以被其他地方引用

使用模块还可以避免函数名和变量名冲突

,尽量不要与内置函数名字冲突。

?为了避免模块
名冲突,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 自己本身的搜索路径不受影响