Python 3.3具有隐式命名空间包(PEP420),并且在Python 2.7包中可以通过在__init__py中添加两行来标记为命名空间包。请参阅How do I create a namespace package in python。
鉴于包启用的功能,默认情况下应该将新包创建为命名空间包。
普通的python软件包只应在需要“封闭”软件包的特殊情况下使用。
这种做法会有什么缺点?
答案 0 :(得分:0)
PEP 420指出常规软件包具有性能优势:
无意删除对常规软件包的支持。如果开发人员知道她的程序包永远不会成为名称空间程序包的一部分,那么将其作为常规程序包(带有
__init__.py
)就具有性能优势。当常规包装沿着路径放置时,可以立即进行创建和加载。对于命名空间包,创建包之前必须先扫描路径中的所有条目。