Python包以及包内的__init__.py文件

一、Python文档对 包(Package)的定义:

package – 包
一种可包含子模块或递归地包含子包的 Python module。从技术上说,包是带有 __ path__ 属性的 Python 模块。

在这里插入图片描述

这里需要注意的是,包(package)只是一种特殊的模块(module)

而在python 3.x之前,文件夹目录中含有__init__.py即为包,但在python3.x之后去除了这一要求,意味着即使目录中没有__init__.py,也会被识别为包,从而调用包中的模块。


二、 那现在的__init__.py有啥用呢?

我们先来看看官方文档对一个包内__init__.py文件的解释:

常规包通常以一个包含 __ init__.py 文件的目录形式实现。 当一个常规包被导入时,这个 __ init__.py 文件会隐式地被执行,它所定义的对象会被绑定到该包命名空间中的名称。__ init__.py 文件可以包含与任何其他模块中所包含的 Python 代码相似的代码,Python 将在模块被导入时为其添加额外的属性。

利用这一点给出它一个用处: 在包的__init__.py文件中导入该包内一些模块内常用的变量、类、对象或者函数等,这样在其他地方导入这个包时,可直接导入这些在__init__.py内初始化的变量。

举个栗子:
Test目录下有一个 包 PackageA 和 main.py,A包内有ModuleA模块:


模块A内有两个变量LocalValue1、LocalValue2

在这里插入图片描述
在包的__init__.py中导入其中一个:

在这里插入图片描述
来看看效果,在主函数中导入 Value1 和 Value2 的不同方式:

在这里插入图片描述
在这里插入图片描述
这样可以很方便的在项目的其他地方导入特定包内常用的一些对象、类或者变量等而无需找到或指明特定模块。

猜你喜欢

转载自blog.csdn.net/qq_44683653/article/details/108920654