在 Python 中,创建包可以让你组织和模块化你的程序代码。传统上,包在每个目录中都需要一个空的 __init__.py 文件。然而,最近版本的 Python 引入了一个名为 命名空间包 的新概念,消除了这一要求。让我们探讨一下这如何改变了包创建的格局。
在 Python 3.3 及更高版本中,命名空间包允许您定义没有 __init__.py 文件的包。此技术涉及创建与包名称匹配的目录结构。例如,您只需创建一个名为“my_package”的目录即可创建一个名为“my_package”的包。
命名空间包的主要用例之一是多个库具有为同一父包提供模块的情况。通过使用命名空间包,这些库可以共享一个公共命名空间,同时仍保持其独立的目录。
虽然命名空间包提供了一些好处,但了解其中的区别很重要它们和具有 __init__.py 文件的 常规包 之间。常规包是独立的,它们的所有部分都驻留在一个目录层次结构中。导入常规包时,如果遇到包含 __init__.py 文件的子目录,则会在该目录内创建单个包,不包括其外部的子目录。
尽管它们有灵活性,命名空间包也会导致一些问题:
虽然 Python 3.3 中的命名空间包提供了简化的包结构和灵活的命名空间共享,但它决定它们是否符合您的项目需求至关重要。对于大多数用例,坚持使用常规包并使用空 __init__.py 文件仍然是组织和导入模块的安全有效的方法。
以上是3.3 及更高版本中的 Python 包是否需要 `__init__.py`?的详细内容。更多信息请关注PHP中文网其他相关文章!