python中的一些特别性质文件

2025年12月15日 0 作者 ScotI_Blog

__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)

Print Friendly, PDF & Email