Leonurus-free

__init__.py执行时机

在 Python 项目中,文件夹中的 __init__.py 文件的执行时机与模块导入密切相关。以下是具体的执行场景和时机:


1. 导入包含 __init__.py 的模块时执行

当 Python 解释器第一次导入一个包含 __init__.py 文件的模块或包时,__init__.py 会被执行一次。

触发条件:

执行顺序:


2. 作为模块初始化的一部分

__init__.py 的主要作用是初始化包,并控制包的导入行为:


3. 间接调用时执行

即使没有显式导入整个包,但导入包中模块时,__init__.py 仍会被执行。例如:

python


复制代码
from my_package.module import some_function

即使只导入了 modulemy_package 目录中的 __init__.py 仍会先执行,之后才导入 module


4. 动态导入时执行

如果使用动态导入(如 importlib__import__ 函数),__init__.py 也会在导入过程中被执行。例如:

python复制代码import importlib
package = importlib.import_module('my_package')

在这段代码中,my_package/__init__.py 会被执行。


5. 直接运行包时执行

如果使用 python -m package_name 命令运行一个包,__init__.py 也是入口文件:

bash


复制代码
python -m my_package

此时,__init__.py 会作为脚本被执行。


6. 不会自动执行的场景


总结