我刚刚开始学习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
您也可以访问这些内容,但名称为 x.A、x.B 和 x.C。
from foo import *
将直接在当前命名空间中导入 A、B 和 C,因此您可以使用 A、B 和 C 访问它们。
还有
from foo import A, C
会将 A 和 C 导入到您当前的命名空间中,但不会导入 B。
您还可以执行
from foo import B as Bar
,这将使 B 在名称 Bar 下可用(在您当前的命名空间中)。
一般来说:当您只想要一个模块的一个对象时,您可以使用
from module import object
或 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()