我知道這是一個愚蠢的問題,但我剛剛開始學習python,並且我對python沒有很好的瞭解。我的問題是什麼?爲什麼我不能只寫導入tkinter作爲tk和tkinter導入的區別
from Tkinter import *
和
import Tkinter as tk
的區別
import Tkinter
任何人都可以花幾分鐘分鐘賜教?
我知道這是一個愚蠢的問題,但我剛剛開始學習python,並且我對python沒有很好的瞭解。我的問題是什麼?爲什麼我不能只寫導入tkinter作爲tk和tkinter導入的區別
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在名稱欄(在您當前的命名空間中)可用。
所以一般情況下:當你只需要一個模塊的一個對象時,你可以做from module import object
或from module import object as whatiwantittocall
。
當您想要某些模塊功能時,您可以使用import module
或import module as shortname
來節省輸入。
from module import *
不鼓勵,因爲您可能會意外地遮蓋(「覆蓋」)名稱,並且可能會失去跟蹤哪些對象屬於哪個模塊。
你當然可以使用
import Tkinter
但是,如果你這樣做,你必須前綴你Tkinter.
使用每一個Tk的類名。
這很不方便。
在另一方面,以下內容:
import Tkinter as tk
只要求你輸入tk.
而不是Tkinter.
迴避的問題。
至於:
from Tkinter import *
它通常是一個壞主意,在Should wildcard import be avoided?
所以討論的原因,它需要更多的處理能力,可使用「進口富」如果我只打算用一個類(例如A類)。我應該使用「從foo導入A」來代替嗎?或者差異可以忽略不計?順便說一句,對於像我這樣的初學者很好的解釋。謝謝! –
關於進口的性能問題是a)微不足道的,b)不相關的。做什麼最適合你,而不是Python的實現。 '從foo導入A'在以後使用A時查找速度更快,但pythonists通常不關心這樣的事情。 – ch3ka