我用認爲兩者相等,直到我試圖這樣的: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_導入(並執行)整個模塊,不同之處在於它們在導入模塊中提供哪些名稱。 –