从导入语法中丢弃属性以_(下划线)开头

时间:2013-07-17 10:24:41

标签: python python-2.7 import

我对python有一个基本的了解,但在某些地方我已经读过,当我们使用以下语法导入模块时,它不会导入在_(单个下划线)开头的指定模块中定义的属性。谁能告诉我它是如何发生的以及为什么会这样?

from module.submodule import *

1 个答案:

答案 0 :(得分:6)

这是设计的。以下划线开头的变量仅被视为内部使用(与其他语言中的私有不同)。它们仍然可以直接在模块上访问,但它们不会导入*导入。

来自documentation*次导入:

  

这将导入除以下划线(_)开头的所有名称。在大多数情况下,Python程序员不使用此工具,因为它在解释器中引入了一组未知的名称,可能隐藏了您已定义的一些内容。

这也是为了告诉你,不鼓励使用*导入,更好地明确导入你需要的东西。例外是设计通过* import使用的模块,这意味着它们具有__all__属性(包含模块要导出的所有内容的名称的列表)。