我知道这是一个愚蠢的问题,但我刚开始学习python而且我对python没有很好的了解。我的问题是
之间有什么区别from Tkinter import *
和
import Tkinter as tk
?为什么我不能写
import Tkinter
有人可以花几分钟来启发我吗?
答案 0 :(得分:15)
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 *
,因为您可能会意外地遮蔽(“覆盖”)名称,并且可能会丢失哪些对象属于哪个模块。
答案 1 :(得分:3)
你当然可以使用
import Tkinter
但是,如果您这样做,则必须为使用Tkinter.
的每个Tk类名称添加前缀。
这很不方便。
另一方面,以下内容:
import Tkinter as tk
只需要您输入tk.
而不是Tkinter.
来回避问题。
至于:
from Tkinter import *
由于Should wildcard import be avoided? 中讨论的原因,这通常是一个坏主意
答案 2 :(得分:0)
写作:
from tkinter import *
导致导入tkinter
模块中存在的所有内容
写作:
import tkinter
导致导入tkinter
模块,但如果这样做,则为了能够调用任何方法,您将必须使用:
tkinter.function_name()