我知道这是一个愚蠢的问题,但我才刚刚开始学习 python,而且我对 python 没有很好的了解。我的问题是有什么区别
from Tkinter import *
和
import Tkinter as tk
?为什么我不能只写
import Tkinter
谁能抽出几分钟来启发我?
from Tkinter import *
将 Tkinter 中的每个公开对象导入到您当前的命名空间中。
import Tkinter
在您的命名空间中导入“命名空间”Tkinter 并
import Tkinter as tk
执行相同操作,但将其在本地“重命名”为“tk”以节省您的输入
假设我们有一个模块 foo,包含类 A、B 和 C。
然后import foo
让您访问 foo.A、foo.B 和 foo.C。
当您这样做时,import foo as x
您也可以访问它们,但是在名称 xA、xB 和 xC 下
from foo import *
将直接在您当前的命名空间中导入 A、B 和 C,因此您可以使用 A、B 和 C 访问它们。
还有from foo import A, C
wich 将导入 A 和 C,但不会将 B 导入您当前的命名空间。
您也可以这样做from foo import B as Bar
,这将使 B 在名称 Bar 下可用(在您当前的命名空间中)。
所以一般来说:当你只想要一个模块的一个对象时,你做from module import object
or from module import object as whatiwantittocall
。
当您需要某些模块功能时,您可以这样做import module
,或import module as shortname
节省您的打字时间。
from module import *
不鼓励,因为您可能会意外隐藏(“覆盖”)名称,并且可能会丢失属于哪个模块的对象。
你当然可以使用
import Tkinter
但是,如果这样做,则必须在使用的每个 Tk 类名称前加上Tkinter.
.
这是相当不方便的。
另一方面,以下内容:
import Tkinter as tk
通过只要求您键入tk.
而不是Tkinter.
.
至于:
from Tkinter import *
由于应避免通配符导入中讨论的原因,这通常是一个坏主意
写作:
from tkinter import *
导致导入tkinter
模块中存在的所有内容
写作:
import tkinter
导致导入tkinter
模块,但如果您这样做,为了能够调用您必须使用的任何方法:
tkinter.function_name()