__init__.py
文件在 Python 包中具有以下几个主要作用:
-
标识包目录:
-
当一个目录包含
__init__.py
文件时,Python 会将其视为一个包(package)。即使__init__.py
文件为空,它也能让 Python 识别该目录为一个包。
-
-
初始化包:
-
__init__.py
文件在包被导入时自动执行,通常用于执行包的初始化代码,例如设置包级别的变量、导入子模块或执行其他初始化操作。
-
-
控制导入行为:
-
可以在
__init__.py
中定义__all__
变量,明确指定通过from package import *
时导入哪些模块或子包。 -
也可以在
__init__.py
中导入包内的模块或子包,简化外部调用时的导入路径。
-
-
提供包级别的接口:
-
可以在
__init__.py
中导入包内的函数、类或变量,使外部调用时可以直接从包名导入,而不需要深入到子模块。
-
-
兼容性:
-
在 Python 3.3 及以上版本中,
__init__.py
不再是必需的(称为“隐式命名空间包”),但为了兼容性和明确性,通常仍会保留。
-
示例
假设有一个包结构如下:
mypackage/ __init__.py module1.py module2.py
在 __init__.py
中可以这样写:
# 导入包内的模块 from .module1 import my_function from .module2 import MyClass # 定义 __all__ 变量 __all__ = ['my_function', 'MyClass']
这样,外部代码可以这样导入:
from mypackage import my_function, MyClass
总结来说,__init__.py
文件是 Python 包的重要组成部分,用于标识包、初始化代码、控制导入行为以及提供包级别的接口。