概念
python中的模塊是什麼?簡而言之,在python中,一個文件(以「.py」為後綴名的文件)就叫做一個模塊,每一個模塊在python裡都被看做是一個獨立的文件。模塊可以被項目中的其他模塊、一些腳本甚至是交互式的解析器所使用,它可以被其他程序引用,從而使用該模塊裡的函數等功能,使用Python中的標準庫也是採用這種方法。
分類
在Python中模塊分為以下幾種:
系統內置模塊,例如:sys、time、json模塊等等;自定義模塊,自定義模塊是自己寫的模塊,對某段邏輯或某些函數進行封裝後供其他函數調用。注意:自定義模塊的命名一定不能和系統內置的模塊重名了,否則將不能再導入系統的內置模塊了。例如:自定義了一個sys.py模塊後,再想使用系統的sys模塊是不能使用的;第三方的開源模塊:這部分模塊可以通過pip install進行安裝,有開源的代碼;
使用模塊
我們先來看一個例子,導入系統內置的sys模塊:
在第二行處,寫了這樣一句話:「import sys」,表示使用系統自帶的sys模塊,因此,在下面的代碼裡,就可以使用sys模塊裡的函數:「sys.argv」,它的作用是返回命令行的參數列表。
使用關鍵詞「import」,後面跟具體的模塊名稱,則可以導入某一個模塊;同一個模塊不管你執行了多少次「import」,只會被導入一次,以防止模塊一遍又一遍的被執行;「import」應該被放在代碼的頂端;
接下來我們導入一個自定義的模塊,首先我們定義一個模塊,並且把這個模塊的名字叫做「myprint.py」,如下圖所示:
這個模塊裡定義了一個函數,列印輸入的參數,並且在後面再加上一行自定義列印的文字。將這個文件保存,接下來讓我們看調用方法:
在調用的地方,同樣只需要輸入「import myprint」,然後就可以在任意地方調用了,調用的方法也是一樣,用該模塊的名字.函數名稱(參數)就能達到調用目的。
from...import
剛才我們提到了引入一個模塊使用「import」關鍵詞,它將把這個模塊整個引入進來,那麼,from...import則是引入一個指定部分到當前的命名空間中來,例如我們有如下圖所示的一個模塊:
上面的模塊定義了兩個函數,分別是「print_myself」和「print_other」,現在我們用from...import使用這個模塊,並且只想使用第一個函數,如下圖:
從上面的兩個例子,我們可以看到,「import」和「from...import」的作用都是引入一個模塊,它們的區別在於:
「import」是引入一個完整的模塊,「from...import」是引入模塊中的一個或多個指定部分;「import」引入模塊後,如果需要使用模塊裡的函數方法,則需要加上模塊的限定名字,「from...import」則不用加模塊的限定名字,直接使用其函數方法;值得一提的是,還有一種引入模塊的方法:「from...import*」,舉例如下圖:
請看,剛才運行時會出錯的地方「print_other」不會出錯了!但是,絕大多數編程人員不會這麼寫,因為它一次性的把一個模塊裡的所有函數、變量都一次性的引入進來了(單下劃線「_」開頭的名字不在此列),有可能會覆蓋現有代碼的定義;
小結
Python中模塊化的好處多多,總結起來,有如下優點:
提高了代碼的可維護性;一個模塊編寫完畢之後,其他模塊直接調用,不用再從零開始寫代碼了,節約了工作時間;避免函數名稱和變量名稱重複,在不同的模塊中可以存在相同名字的函數名和變量名,但是,切記,不要和系統內置的模塊名稱重複;