我需要知道 from tkinter import * 和 from tkinter import 'module' 之间的区别是什么

i need to know whats the diference between from tkinter import * and from tkinter import 'module'

我是初学者 python,我正在做一些教程和视频教程。我正在使用 sublime text 3 编写代码,并使用 sublimeREPL 的控制台 运行 文件和代码。 几天前,我不得不在网上搜索如何将 sublimeREPL 制作成 运行 as IDLE 3 运行s,我做到了。

现在的问题是,在我正在上的课中,他们正在教我如何使用 tkinter,但在视频中,那家伙编码:

from tkinter import *
colorchooser.askcolor()

它可以工作,但是当我编写代码时,它不起作用。错误说:

Traceback (most recent call last): File "", line 1, in NameError: name 'colorchooser' is not defined

我需要编码:

from tkinter import colorchooser
colorchooser.askcolor()

而且有效。

我只需要知道为什么我必须这样做?为什么第一种方式对我不起作用?

我不会说英语我尽力了。

from tkinter import * 不起作用,因为您需要整个 tkinter 目录。 这就是为什么您必须为您的程序指定特定的颜色选择器模块。

from tkinter import colorchooser

您正在从 package(结构化模块)导入(子)模块 colorchooser(加上它的变量和函数) tkinter.

Packages are a way of structuring Python’s module namespace by using “dotted module names”.

所以模块tkinter的结构如下:

tkinter/
    colorchooser/
        askcolor()
        ...

使用 from tkinter import * 你是 importing all methods and variables 来自 tkinter(实际上所有 public 对象不是以 _ 开头),但是不是它的子模块,这就是为什么这两个方法不一样:

... the statement from sound.effects import * does not import all submodules from the package sound.effects into the current namespace

(source)

但是你可以(尽管很多人会说 from ... import * 是不好的做法)

from tkinter.colorchooser import *

我不确定你在哪里看到的,但是 colorchooser 一直是 tkinter 中的一个模块,当你这样做时它不会被导入 -

from tkinter import *

您必须使用 -

专门导入它
from tkinter import colorchooser

如您所见。