【Python】關(guān)于import module語句
在發(fā)布的python your grasshopper_02視頻中對import module語句有比較詳細的解讀,部分朋友還不是很理解,所以特意寫此篇專欄。
一、我的困惑
個人開始學習導入模塊內(nèi)容時,經(jīng)常看到如下內(nèi)容:
import<模塊名>:通過這種方式會導入模塊的所有代碼元素,在訪問時需要加前綴“模塊名”。
from<模塊名>import<代碼元素>:通過這種方式會導入模塊中的x變量,在訪問時不需要加前綴“模塊名”。
·以上兩種方式后加as <別名>,可以給模塊起一個別名。
看到以上內(nèi)容,有兩個問題一直困擾著我:
兩種方式為什么一個需模塊名作前綴,而另一個不用?
起了別名后為什么原名不能再用了?
為什么起別名?
帶著這兩個問題,查閱了不少文章,也瀏覽了很多視頻,不知過了多久,拼湊出了一個自己認為比較完整的答案,我相信有些初學者也會有這樣的困惑,所以把它分享在我開頭所說的視頻里。
二、我的解答
import后的模塊名實際是一個變量,名字和模塊文件同名,是因為便于查找這個名字的模塊文件并讓文件和這個變量對應(yīng)關(guān)聯(lián);
關(guān)聯(lián)后,可以對這個變量名更改,這本身就是變量之所以稱為“變”量的原因,即同一個對象,不同程序員可以各自對其起不同名稱;
和生活中的“別名”有所不同,別名“齊天大圣”大家都知道是指孫悟空,而程序中一個對象只能有一個變量名和其對應(yīng),所以給模塊起別名可以理解為給模塊改名字,有了新的名字,原來的名字和這個對象的對應(yīng)關(guān)系就斷掉了;
至于為什么起別名,一是可以簡化過長的名字;二是避免原名重名,尤其導入方式二產(chǎn)生重名的幾率較大。
對一個變量操作肯定是要寫出這個變量名;上述導入方式2講不用模塊名作前綴,因為變量名沒和模塊建立對應(yīng)關(guān)系,而是和import后變量所代表的class或method建立了對應(yīng)關(guān)系,使用它責寫代表它的變量名。
對4項也可以這樣理解:和生活中叫一個人做事先喊他名字一樣,叫一個module或class做事也要叫它名字。導入方式一,導入的是模塊,所以要喊出模塊名,然后訪問其包含的功能。導入方式二導入的是class或method,所以就直接喊它的名字,它所在的module文件沒有變量和其建立聯(lián)系,所以你也不知道它的名字,就是說不用module作為前綴。
以上內(nèi)容希望對初學者有所幫助,也愿意拋出我的觀點和各大佬交流學習。