我有时注意到,如果你在包/模块上调用dir()
,你会看到命名空间中作为实现的一部分导入的其他模块,并不适合你使用。例如,如果我从PyPI安装fish包并导入它,我会看到fish.sys
,它只是引用内置的sys
模块。
我的问题是,如果不是这样,那是否理智,怎么办呢。
我认为__all__
变量不太相关,因为仅会影响from X import *
的行为。我看到的选项是:
import X as _X
来区分包API的实现细节答案 0 :(得分:1)
我的问题是,这是否理智
这是理智的。执行import fish
只会在命名空间中添加一个名称,而不是“名称空间混乱”。这几乎是模块背后的重要思想,将许多东西归为一个名称!
如果您想了解模块的功能,请查看文档或致电help
,不要dir
。
Python中的所有名称都存储在dictonaries中。这意味着无论你看到多少个名字,查找其中一个名字都需要不间断的时间。因此,任何一种都没有速度缺陷。