模組
Python 模組(Module),是一個 Python 檔案,以 .py 結尾,包含了 Python 物件定義和Python語句。
模組讓你能夠有邏輯地組織你的 Python 程式碼段。
把相關的程式碼分配到一個模組裡能讓你的程式碼更好用,更易懂。
模組能定義函式,類和變數,模組裡也能包含可執行的程式碼。
模組的建立因為Python的模組就是一個Python檔案,所以現在我們建立一個能夠專門提供貧窮等級計算的模組service。
檔名:service.py
def judgeQLevel(money:int): if money > 50: res = "富有" elif money > 45: res = "小康" elif money > 40: res = "貧窮" elif money > 30: res = "特窮" else: res = "低保救助物件" msg = f"根據你的年收入,計算出你的貧窮級別為:{res}" return msg
建立完後,模組service中就有一個可供使用者使用的方法judgeQLevel,使用者可以在自己的程式碼中直接匯入使用。
模組的匯入和使用建立測試檔案test.py匯入並使用service模組
import service moneyYear = input("請收入你的年收入,單位(萬):") ret = service.judgeQLevel(int(moneyYear)) print(ret)
執行結果:
➜ test git:(master) ✗ python3 test.py請收入你的年收入,單位(萬):15根據你的年收入,計算出你的貧窮級別為:低保救助物件➜ test git:(master) ✗ python3 test.py請收入你的年收入,單位(萬):31根據你的年收入,計算出你的貧窮級別為:特窮➜ test git:(master) ✗ python3 test.py請收入你的年收入,單位(萬):100根據你的年收入,計算出你的貧窮級別為:富有➜ test git:(master) ✗ python3 test.py請收入你的年收入,單位(萬):50根據你的年收入,計算出你的貧窮級別為:小康
對於service這個模組名稱,如果你覺得不好理解,那麼你可以在匯入的時候對其進行重新命名。
import service as poor_level moneyYear = input("請收入你的年收入,單位(萬):") ret = poor_level.judgeQLevel(int(moneyYear)) print(ret)
當前我們的模組中只有一個方法,直接匯入service即可,如果模組中有很多方法時,我們全部匯入就會導致比較大的資源消耗,這種情況下,我們可以選擇精確匯入我們所需要的方法。
from service import judgeQLevel moneyYear = input("請收入你的年收入,單位(萬):") ret = judgeQLevel(int(moneyYear)) print(ret)
這樣也可以:
from service import judgeQLevel as poor_level moneyYear = input("請收入你的年收入,單位(萬):") ret = poor_level(int(moneyYear)) print(ret)
高階用法:
使用__import__方法,import的本質就是呼叫這個方法。
__import__ 函式可用於匯入模組,import 語句也會呼叫函式。其定義為:
__import__(name[, globals[, locals[, fromlist[, level]]]])
引數介紹:
name (required): 被載入 module 的名稱
globals (optional): 包含全域性變數的字典,該選項很少使用,採用預設值 global()
locals (optional): 包含區域性變數的字典,內部標準實現未用到該變數,採用預設值 - local()
fromlist (Optional): 被匯入的 submodule 名稱
level (Optional): 匯入路徑選項,Python 2 中預設為 -1,表示同時支援 absolute import 和 relative import。Python 3 中預設為 0,表示僅支援 absolute import。如果大於 0,則表示相對匯入的父目錄的級數,即 1 類似於 '.',2 類似於 '..'。
poor_level = __import__('service') moneyYear = input("請收入你的年收入,單位(萬):") ret = poor_level.judgeQLevel(int(moneyYear)) print(ret)
等同於:
poor_level = __import__('service').judgeQLevel moneyYear = input("請收入你的年收入,單位(萬):") ret = poor_level(int(moneyYear)) print(ret)
當然importlib也是一個在模組管理中很好用的標準庫。