python的__init__.py

即使是空的 __init__.py,它依然有两个核心作用,对于你(特别是做工程化开发)非常重要。


1. 把它变成"常规包" (Regular Package)

如果你不加 __init__.py,Python 3 会把这个目录当作 Namespace Package(命名空间包)。

  • Namespace Package 是个高级特性,允许一个包分布在硬盘的多个不同目录下(比如 plugin/ 文件夹一部分在 C 盘,一部分在 D 盘)。
  • 对于我们这种普通的项目,你需要的是 Regular Package 。加上 __init__.py,Python 扫描 import 时效率更高,而且行为更符合直觉。

2. 控制 from package import * 的行为 (重点)

这是 __init__.py 最实用的功能:对外暴露接口。

假设你的目录结构是这样:

text 复制代码
strategies/
├── __init__.py
├── rsi_strategy.py   <-- 里面有个 class RSIStrategy
└── ma_strategy.py    <-- 里面有个 class MAStrategy

如果 __init__.py 是空的:

你想在 main.py 里用这两个策略,你得写得很长:

python 复制代码
from strategies.rsi_strategy import RSIStrategy
from strategies.ma_strategy import MAStrategy

(如果文件名很长,这会写得很烦)

如果你在 __init__.py 里写了东西:

你可以在 strategies/__init__.py 里写:

python 复制代码
# strategies/__init__.py
from .rsi_strategy import RSIStrategy
from .ma_strategy import MAStrategy

现在,你在 main.py 里就可以这样写了:

python 复制代码
# 变得非常简洁!
from strategies import RSIStrategy, MAStrategy

这就是所谓的 "提升命名空间"。你把深层文件里的类,提到了包的顶层,让使用者(也就是你自己)调用起来更爽。

总结

虽然 Python 3 不强制要求,但请务必保留 __init__.py,哪怕是空的。 因为它标志着:"这是一个完整的、独立的 Python 源代码包",这对于代码规范和 IDE 的智能提示都非常重要。

相关推荐
MrGet25 分钟前
一步一步学Python(三):文件读写
python
是Yu欸1 小时前
先让 T1 Pro 传回一张好用的图:JPEG 抓拍、RTSP 视频与方向校正
python·机器人·音视频
伞伞悦读1 小时前
【第60期】特征值不是重要性:Python 特征分解与 PCA 的前置判断
python
2601_967980111 小时前
Python之wxPython模块的安装
linux·windows·python·wxpython·gui设计·1024程序员节
云南新人和数采集团1 小时前
DeepSeek Harness 开源贡献手记:从入门到合入主线
python·开源·github
信誓旦旦的程序猿2 小时前
【Python量化实战宝典 #20】动量、反转择时手册:趋势跟随与均值回归(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
好焊孙辉2 小时前
从六代螺柱焊机到AI质检:鸿栢科技的螺柱焊国产化路径
人工智能·python·科技·fpga开发
benchmark_cc2 小时前
个人量化系统搭建:如何利用 QuantDash 实现 A 股日 K 线前复权数据的高效获取与质量校验?
python·数据分析·pandas·量化交易·股票数据·quantdash
hhb_6183 小时前
Python异步队列实战:高效处理耗时任务
开发语言·python
2601_962885723 小时前
一个接口取 A 股+美股+港股:多市场数据方案对比
python