我用认为两者相等,直到我试图这样的:Python:“import X”和“from X import *”有什么区别?
$python
Python 2.7.13 (default, Dec 17 2016, 23:03:43)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
>>> root=Tk()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Tk' is not defined
>>> from Tkinter import *
>>> root=Tk()
那么什么是这2种进口的,从一个模块中导入所有的核心区别?
谢谢。
虽然“明星”导入经常用在Tkinter示例代码中,但这并不是一种好的做法。它将所有这些Tkinter名称转储到您的名称空间(Python 2中的175个名称,Python 3中的135个名称)。这会造成不必要的混乱,以及名称冲突的可能性,尤其是如果您导入另一个模块。它还使代码更难阅读,因为您必须记住哪些名称是Tkinter名称,而不是能够明确地看到它。首选的做法是'将Tkinter导入为tk',然后执行'root = tk.Tk();按钮= tk.Button(root,...)'。 –
请注意,所有形式的'import' _always_导入(并执行)整个模块,不同之处在于它们在导入模块中提供哪些名称。 –