将导入的模块排除在python包名称空间之外
我注意到,有时如果在包/模块上调用将导入的模块排除在python包名称空间之外,python,Python,我注意到,有时如果在包/模块上调用dir(),您会在名称空间中看到作为实现的一部分导入的其他模块,这些模块不适合您使用。例如,如果我从PyPI安装fish包并导入它,我会看到fish.sys,它只是指内置的sys模块 我的问题是这是否合理,如果不合理怎么办 我不认为\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>变量太相关,因为这只会影响X import*中的行为。我看到的选择是: 更好地构建您的包,并且至少将名称空间混乱向下推到子模块中 在包中使用impo
dir()
,您会在名称空间中看到作为实现的一部分导入的其他模块,这些模块不适合您使用。例如,如果我从PyPI安装fish包并导入它,我会看到fish.sys
,它只是指内置的sys
模块
我的问题是这是否合理,如果不合理怎么办
我不认为\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>变量太相关,因为这只会影响X import*
中的行为。我看到的选择是:
- 更好地构建您的包,并且至少将名称空间混乱向下推到子模块中
- 在包中使用
import X as\u X
将实现细节与包API区分开来
- 从函数内部导入内容(blegh)
我的问题是这是否合理
这是理智的。执行importfish
操作只会在名称空间中添加一个名称,而不是“名称空间混乱”。这几乎是模块背后的大创意,将许多东西归为一个名称
当您想了解模块的功能时,请查看文档或致电帮助
,不要执行目录
Python中的所有名称都存储在dictonary中。这意味着无论你看到多少个名字,查找其中一个都需要固定的时间。所以也没有任何形式的速度缺陷。我不明白。如果它不适合您使用,请不要使用。我会在可用时查看文档和帮助,但是dir
很方便,例如,如果我一直忘记一些长函数名。是的,我不是真的关心速度或任何东西,只是整理包的组织。