2

Python 3.3 具有隐式命名空间包 (PEP420),在 Python 2.7 中,可以通过在 __init__py 中添加两行来将包标记为命名空间包。请参阅如何在 python 中创建命名空间包

鉴于包启用的功能,看起来新包应该默认创建为命名空间包。

普通的 python 包应该只在明显需要“封闭”包的特殊情况下使用。

这种方法有什么缺点?

4

1 回答 1

0

PEP 420说明常规包具有性能优势:

无意删除对常规软件包的支持。如果开发人员知道她的包永远不会成为命名空间包的一部分,那么将其作为常规包(带有__init__.py)具有性能优势。当常规包位于路径上时,可以立即创建和加载常规包。对于命名空间包,必须在创建包之前扫描路径中的所有条目。

于 2019-10-28T00:43:32.520 回答