为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。

为什么使用模块?

和C语言类似:

1、大大提高代码的可维护性;

2、很多功能代码可以复用,可以被第三方引用;

3、不同的模块拥有不同的命名空间,可以避免函数名、变量名冲突。


要是不同的人编写的模块名相同怎么办?为了避免冲突,Python引入了按目录来组织模块的方法,成为包(package)。

举个例子:比如abc.py和xyz.py分别是模块abc和xyz。现在这两个模块名与其他模块冲突了。解决方法是设计一个顶层包名,比如mycompany,按照目录存放:

wKiom1kbBpjyqDrlAAHMcDsMank709.png-wh_50


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

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

也可以有多级目录,组织多层次的包结构:

wKioL1kbBoChCcYyAAHUb7hFRj4564.png-wh_50

文件www.py的模块名就是mycompany.web.www,两个文件utils.py的模块名分别是mycompany.utilsmycompany.web.utils

自己创建模块时要注意命名,不能和Python自带的模块名称冲突。例如,系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块。

mycompany.web也是一个模块,请指出该模块对应的.py文件。