Table of Contents
#custom-toc-container
<h1 style="margin: 0;"><a id="00"><div style='text-align: center; color:rgb(10,120,170);'>\_\_init\_\_.py解析</div></a></h1> 在Python中,`__init__.py`是一个特殊的文件,用于标识一个包(Package)。包是一个包含模块(Module)和其他子包的文件夹,它允许你将相关的模块组织在一起,方便管理和导入。 <h2><a id='01'>包的结构</a></h1> 在包的根目录中,通常会有一个`__init__.py`文件。它可以是一个空文件,也可以包含一些Python代码。当Python解释器遇到一个包含`__init__.py`的文件夹时,它会将该文件夹视为一个包,并且可以通过包名导入其中的模块。 <h2><a id='02'>包的初始化</a></h2> `__init__.py`文件在包被导入或初始化时执行。这意味着你可以在`__init__.py`中执行一些初始化操作,例如设置包级别的变量、导入子模块、或者执行其他必要的配置。 > 导入包或包中的模块时,会自动执行该包中的\_\_init\_\_.py中的代码。 `__init__.py`中导入(import)的包或模块,在当前包的.py文件import了\_\_init\_\_.py后,此python文件也可以使用。 <h2><a id='03'>命名空间</a></h2> 在`__init__.py`中定义的变量、函数和类都会成为包的一部分,它们在包的命名空间中可见。这意味着,当你导入包时,`__init__.py`中的内容也可以被访问。 <h2><a id='04'>子包的嵌套</a></h2> 如果你的包中还包含其他子包,那么子包的文件夹也应该包含一个`__init__.py`文件。这样,子包也会被正确地识别为包,而且在导入时也会执行子包的`__init__.py`。 <h2><a id='05'>其他</a></h2> `__init__.py`文件可以为空。 从Python 3.3版本开始,不再强制要求包含`__init__.py`文件来定义包。你可以使用"namespace packages"来组织代码,允许在目录中定义子包而无需在每个子包目录下添加`__init__.py`文件。但对于传统的单个独立包,为了保持向后兼容性和良好的习惯,建议在包目录中添加`__init__.py`文件。 <p class="time">------ 2023-12-09 星期六 13:04:24 ------</p>
文章目录
__init__.py解析
包的结构
包的初始化
命名空间
子包的嵌套
其他