Python 3.3 中是否不再需要为包提供 __init__.py 文件?
引言:__init__.py 文件的作用
在 Python 中,__init__.py 文件的作用是标识一个目录为包,允许将该目录的不同目录和模块组织为一个命名空间。在 Python 2.7 及更早版本中,__init__.py 文件是创建包的必需条件。
Python 3.3 中的 __init__.py 文件
在 Python 3.3 中,引入了隐式命名空间包的概念,这使得即使没有 __init__.py 文件,也可以创建包。这意味着现在可以将一个目录指定为命名空间包,而该目录中的内容可以被模块化。
命名空间包的用例
这种隐式命名空间包功能最常见的用例是允许来自不同位置的多个库贡献子包给父包。例如,假设有两个库 google_pubsub 和 google_storage,它们提供以下结构:
google_pubsub/ # 包 1 google/ # 命名空间包(没有 __init__.py) cloud/ # 命名空间包(没有 __init__.py) pubsub/ # 常规包(有 __init__.py) __init__.py # 必需的,用于创建常规包 foo.py google_storage/ # 包 2 google/ # 命名空间包(没有 __init__.py) cloud/ # 命名空间包(没有 __init__.py) storage/ # 常规包(有 __init__.py) __init__.py # 必需的,用于创建常规包 bar.py
在这种情况下,google/ 和 google/cloud/ 目录必须是命名空间包,这样才能将 google_pubsub 和 google_storage 包视为相同父包下的子包。
结论:
存在以下两种类型的 Python 包:
以上是3.3 版本中的 Python 包仍然需要 `__init__.py` 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!