2025-12-15

python中的一些特别性质文件

init.py

在Python工程里,当python检测到一个目录下存在__init__.py文件时,python就会把它当成一个模块(module)。Module跟C++的命名空间和Java的Package的概念很像,都是为了科学地组织化工程,管理命名空间。

主要作用:

  1. 标识目录为Python包
    即使为空文件,目录中包含__init__.py也会被Python视为包(适用于Python 3.3之前的版本;3.3+支持"命名空间包",无需此文件)。

  2. 初始化包级代码
    当包被导入时,__init__.py中的代码会自动执行 (例如:初始化变量、连接数据库)。

  3. 控制模块导入

    • 批量导入 :简化用户导入路径(例:from mypackage import func 而非 from mypackage.module import func)。

    • **定义__all__**:指定from package import *时导入哪些模块。

    • 隐藏内部实现 :可在__init__.py中导入公共接口,隐藏内部模块。

  4. 共享包级变量/函数
    __init__.py中定义变量、函数或类,可在包的多个模块间共享。

执行顺序示例

mypackage/

├── init.py # (1) ├── module1.py
└── subpackage/ ├── init.py # (2) └── module2.py # (4)

当执行 import mypackage.subpackage.module2 时:

  1. 先执行外层包初始化mypackage/__init__.py (1)

  2. 再执行子包初始化mypackage/subpackage/__init__.py (2)

  3. 最后导入目标模块module2.py (4)