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 的不同方式:

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python是一种组织Python模块的方法,它将相关的模块组合在一起,形成一个大的模块。可以含子和模块,以及其他资源文件。 在一个目录,通常会有一个名为`__init__.py`的文件。这个文件的主要作用是标识该目录为Python,同时可以在其编写一些初始化代码。 `__init__.py`可以为空文件,也可以Python代码。如果`__init__.py`文件存在,则在导入时会自动执行其的代码。这就使得我们可以在的初始化过程完成一些需要执行的操作,例如设置环境变量、导入必要的模块等。 例如,如果我们有一个名为`mypackage`的,那么它的目录结构可能如下所示: ``` mypackage/ __init__.py module1.py module2.py ``` 其,`__init__.py`可以含一些初始化代码,例如: ```python # 在 __init__.py 导入模块 from .module1 import * from .module2 import * ``` 这样,在导入`mypackage`时,就会自动导入`module1`和`module2`模块。 此外,`__init__.py`还可以定义级别的变量和函数,供包内的模块使用。例如: ```python # 定义级别的变量 PI = 3.14 # 定义级别的函数 def square(x): return x ** 2 ``` 这样,在包内的模块,我们就可以直接使用`mypackage.PI`和`mypackage.square()`来访问这些变量和函数了。 总之,`__init__.py`文件Python的重要组成部分,它可以帮助我们更好地组织和管理Python代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值