Python中的模块和包的区别

Python010

Python中的模块和包的区别,第1张

1、模块(Module)就是包含代码文件,不一定是Python代码,有四种代码类型的模块:

•使用Python写的程序( .py文件)

•C或C++扩展(已编译为共享库或DLL文件)

•包(包含多个模块)

•内建模块(使用C编写并已链接到Python解释器内)

使用模块可以提高代码的可维护性和重复使用,还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,所以编写自己的模块时,不必考虑名字会与其他模块冲突,但要注意尽量不要与内置函数名字冲突。

2、包(Package)就是包含模块文件的目录,目录名称就是包名称,目录中可以包含目录,子目录也是包,但包名称应该包含上一级目录的名称。Python引入了按目录来组织模块是为了避免模块名冲突,不同包中的模块名可以相同。

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

在 Python 包的顶级目录下存放主要的模块文件可以使这些模块文件在其他 Python 代码中更方便地被导入和使用。

Python 中的包是一种组织 Python 代码的方式,可以将相关的模块和函数分组在一起,方便代码的维护和使用。包是一个目录,它包含一个特殊的文件 __init__.py,这个文件可以是空的,也可以包含 Python 代码,在导入包时会被执行。

在包的顶级目录下存放主要的模块文件,可以方便地将这些模块文件导入到其他 Python 代码中,而不用关心这些模块文件的具体位置。例如,假设有一个包 mypackage,包含两个模块文件 module1.py 和 module2.py,如果将这两个模块文件放在包的顶级目录下,就可以在其他 Python 代码中用以下方式导入这两个模块:

import mypackage.module1

import mypackage.module2

如果将这两个模块文件放在包的子目录下,则需要在导入时指定子目录的名称。例如:

import mypackage.subdir.module1

import mypackage.subdir.module2

这样会使导入的语句变得复杂,不利于代码的阅读和维护。因此,通常将主要的模块存放在顶级目录下方便调用。

1.python模块是:

python模块:包含并且有组织的代码片段为模块。

表现形式为:写的代码保存为文件。这个文件就是一个模块。sample.py 其中文件名smaple为模块名字。

关系图:

2.python包是:

包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。

通俗一点:包是一个包含__init__.py 文件的目录,该目录下一定得有这个__init__.py文件和其它模块或子包。

常见问题:

引入某一特定路径下的模块

使用sys.path.append(yourmodulepath)

将一个路径加入到python系统路径下,避免每次通过代码指定路径

利用系统环境变量 export PYTHONPATH=$PYTHONPATH:yourmodulepath,

直接将这个路径链接到类似/Library/Python/2.7/site-packages目录下

好的建议:

经常使用if __name__ == '__main__',保证写包既可以import又可以独立运行,用于test。

多次import不会多次执行模块,只会执行一次。可以使用reload来强制运行模块,但不提倡。

常见的包结构如下:

package_a

├── __init__.py

├── module_a1.py

└── module_a2.py

package_b

├── __init__.py

├── module_b1.py

└── module_b2.py

main.py

如果main.py想要引用packagea中的模块modulea1,可以使用:

from package_a import module_a1

import package_a.module_a1

如果packagea中的modulea1需要引用packageb,那么默认情况下,python是找不到packageb。我们可以使用sys.path.append('../'),可以在packagea中的__init__.py添加这句话,然后该包下得所有module都添加* import __init_即可。

关系图:

3.库(library)

库的概念是具有相关功能模块的集合。这也是Python的一大特色之一,即具有强大的标准库、第三方库以及自定义模块。