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

tai*_*raj 2 python import python-2.7

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

from module.submodule import *
Run Code Online (Sandbox Code Playgroud)

mat*_*ata 6

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

从有关导入的文档*:

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

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

  • +1阻止使用*导入. (2认同)