Python “究竟是什么?”;从模块导入*;什么意思?

Python “究竟是什么?”;从模块导入*;什么意思?,python,python-3.x,Python,Python 3.x,我以为这意味着模块中的一切。但在tkinter中,我必须特别导入messagebox、colorchooser和filedialog等内容,尽管有“fromTkinter import*”命令。那么,“import*”到底是什么意思呢?它只是意味着您可以以一种方式导入所有(方法、变量等),这样在使用它们时就不需要给它们加前缀 from module import * 这将导入所有名称,但以下划线(\开头的名称除外 阅读更多: 模块可以定义一个\uuuuuuuuuuuuuuuuuuuuuuuuu

我以为这意味着模块中的一切。但在tkinter中,我必须特别导入messagebox、colorchooser和filedialog等内容,尽管有“fromTkinter import*”命令。那么,“import*”到底是什么意思呢?

它只是意味着您可以以一种方式导入所有(方法、变量等),这样在使用它们时就不需要给它们加前缀

from module import *
这将导入所有名称,但以下划线(\开头的名称除外

阅读更多:

模块可以定义一个
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
变量:一个包含从模块导入时导入的名称的列表*。不在此列表中的任何内容实际上都不会被导入。

Answers会让您知道它的含义,但建议不要使用它,因为它会使代码的可读性大大降低。如果您想让它更简单,请使用
将mycomplexmodule导入为mm
;-)投票被否决,因为它实际上没有回答OP的问题。具体来说,为什么它不导入messagebox、colorchooser和filedialog?这些名称不是以下划线开头的。是以下划线开头的名称包含在all变量中,还是默认情况下不导入(因为它们是隐藏的)?在这种情况下,这不是正确的答案。。。从tkinter导入*从。。。但是colorchooser函数是在第二个文件中定义的…我不确定我是否理解这个问题。如果模块的作者决定包含
\uuuuu all\uuuu
变量,则完全由他们决定其中包含的内容。虽然蟒蛇会对他们皱眉,如果他们明确包括下划线的名字。如果它们不包含
\uuuuu all\uuuu
变量,则只导入非下划线起始名称。(假设
\uuuuuu all\uuuuuu
的默认值是“每个不以下划线开头的名称”。)我认为实际的问题是为什么它不直接导入模块中的所有内容。例如,
ttk
位于
tkinter
中,但它不是通过“import*”导入的。