2010-10-06 57 views
2

我注意到有时候,如果你在包/模块上调用dir(),你会看到命名空间中的其他模块作为实现的一部分被导入并且不适合你使用。例如,如果我从PyPI安装鱼包并导入它,我看到fish.sys,它只是指内置的sys模块。保留导入的模块不在Python包名称空间

我的问题是这是否理智,如果不是这样,应该怎么做。

我不认为__all__变量太相关,因为只有影响from X import *的行为。我看到的选项:

  • 结构中的包好,至少推命名空间杂乱分解成子模块
  • 使用import X as _X在你的包从你的包API从内部
  • 进口的东西区分开实施细则你的函数(blegh
+0

我不明白。如果它不适合你使用,不要。 – SilentGhost 2010-10-06 13:54:50

回答

1

我的问题是这是否是明智的

这是理智的。做import fish只会给你的名字空间增加一个名字,那不是“名字空间混乱”。这几乎是模块背后的重要思想,将许多事情归入一个名称!

当您想知道模块的功能时,请查看文档或致电help,不要做dir

Python中的所有名字都存储在字典中。这意味着不管你看到多少名字,查找其中的一个都需要不断的时间。所以没有任何种类的速度缺陷。

+0

我会查看文档并在可用时寻求帮助,但是如果我忘记了一些长的函数名称,那么'dir'很方便。 – 2010-10-07 14:57:42

+0

是的,我并不是真的关心速度或任何其他事情,只是整洁的包装组织。 – 2010-10-07 14:58:58

相关问题