首页 > 后端开发 > Python教程 > Python 3.3 是否消除了包中对 __init__.py 的需要?

Python 3.3 是否消除了包中对 __init__.py 的需要?

Mary-Kate Olsen
发布: 2024-11-29 06:54:09
原创
387 人浏览过

Does Python 3.3  Eliminate the Need for __init__.py in Packages?

Python 3.3 中的包不需要 __init__.py 吗?

Python 3.3 及更高版本引入了 命名空间包。此功能允许您创建没有 __init__.py 文件的包。

命名空间包与常规包

  • 命名空间包:没有 __init__.py 文件,允许多个模块跨不同的模块为同一个包做出贡献
  • 常规包:有一个 __init__.py 文件,使它们独立并将其模块隔离到单个目录层次结构。
何时使用命名空间包

主要用例命名空间包是指您有多个库驻留在不同位置,并希望它们向父包贡献一个子包。

例如:

google_pubsub/
google/                 <- Namespace package (no __init__.py)
    cloud/              <- Namespace package (no __init__.py)
        pubsub/         <- Regular package (with __init__.py)
            __init__.py <- Required to make the package a regular package
            foo.py
登录后复制
google_storage/
google/                 <- Namespace package (no __init__.py)
    cloud/              <- Namespace package (no __init__.py)
        storage/        <- Regular package (with __init__.py)
            __init__.py <- Required to make the package a regular package
            bar.py
登录后复制

在此示例中,google_pubsub 和 google_storage 共享相同的 google/cloud 命名空间。这允许您从任一库导入模块,而无需提供完整路径。

常规包

对于大多数用例,使用 __init__.py 文件创建常规包仍然是推荐的方法。这提供了自我包含并防止潜在的命名空间冲突。

以上是Python 3.3 是否消除了包中对 __init__.py 的需要?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板