不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

Python 包(package)

在比较大型的项目中常常需要编写、用到大量的模块,此时我们可以使用包(Package)来管理这些模块。

(一)什么是包?

Python包,就是里面装了一个__init__.py文件的文件夹。

__init__.py文件(前后各有 2 个下划线‘__’)具有下面4个性质

1.它本身是一个模块;

2.这个模块的模块名不是__init__,而是这个包的名字,也就是装着__init__.py文件的文件夹的名字。

3.它的作用是将一个文件夹变为一个Python模块

4.它可以不包含代码,不过此时仅仅用import [该包]形式是什么也做不了的。所以一般会包含一些Python初始化代码,在这个包被import的时候,这些代码会自动被执行。

5.第4点所指的初始化代码类型一:批量导入我们需要用到的模块,这样我们就不用在用到的时候再一一导入,方便实用。

6.第4点所指的初始化代码类型二:如果我们要使用“from pacakge_1 import *”的形式导入一个模块里面的所有内容,则需在__init__.py中加上“all = [‘file_a’, ‘file_b’]”。其中,package_1下有file_a.py和file_b.py。

7.不建议在__init__.py中写类,以保证该py文件简单。

 

__all__是Python中的一个重要的变量,放在__init__模块中,用于指定此包(package)被import *时,哪些模块(module)会被import进当前作用域中。不在 __all__列表中的模块不会被其他程序引用。我们可以对 __all__进行重写。

__path__也是python中的一个常用变量,它是储存着当前包内的搜索路径的一个列表。默认情况下只有一个元素,即当前包(package)的路径。

 

Python包具有下面3个性质:

1.它实质上是一个文件夹;

2.该文件夹里面一定有__init__.py模块,其他的模块可以有也可以没有;

3.它的本质依然是模块,因此一个包里面还可以装其他的包。

 

(二)导入包

导入包的方法和导入模块比较类似,只不过由于层级比一般模块多了一级,所以多了一条导入形式:

1.import 包名[.模块名 [as 别名]]

2.from 包名 import 模块名 [as 别名]

3.from 包名.模块名 import 成员名 [as 别名]

我们在导入包的时候,实际上是导入了它的__init__.py文件文件。

赞(0) 打赏
未经允许不得转载:seo优化_前端开发_渗透技术 » Python 包(package)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏