前面一片筆記提到了Python的模塊化編程思維,所以接下來就是要學習如何使用Python已有的各種模塊,提高程序的“代碼複用性”。
【0】提出問題
- 模塊就是數量眾多語句的封裝,使用基於此我們可以問這樣一個問題:Python中是否可以導入任何人編寫的模塊?
- 另外,導入模塊的方法或成員是否可以被全部調用?
- 由於Python中一切皆對象,從而需要佔用存儲資源,所以很多時候並不需要把模塊所有內容都導入,Python是否支持部分導入模塊內容呢?
【1】import導入
import 語句的基本語法格式如下:
- import 模塊名 #導入一個模塊;
- import 模塊 1,模塊 2… #導入多個模塊;
- import 模塊名 as 模塊別名 #導入模塊並使用新名字
import 加載的模塊分為四個通用類別:
- 使用 python 編寫的代碼(.py 文件);
- 已被編譯為共享庫或 DLL 的 C 或 C++擴展;
- 包好一組模塊的包;
- 使用 C 編寫並鏈接到 python 解釋器的內置模塊。
import 語句實現模塊的導入和使用。
當我們通過 import 導入一個模塊時,python 解釋器進行執行,最終會生成一個對象,這個對象就代表了被加載的模塊。
import math
print(id(math))
print(type(math))
print(math.pi) #通過 math.成員名來訪問模塊中的成員
【結論】導入的模塊確實以一個對象的形式存在;模塊的方法或成員都可以採用調用對象屬性的方式調用。
至於導入多個模塊,本質上也是生成多個 module 類的對象而已。
碰到模塊名稱不好記憶的情況,我們可以早導入模塊的時候就起個別名。本質上,這個別名僅僅是新創建一個變量引用加載的模塊對象而已。
【2】from……import導入
Python 中可以使用 from…import 導入模塊中的成員,即解決來可以導入模塊中部分內容的問題。
基本語法格式如下:
from 模塊名 import 成員 1,成員 2,…
從數學角度講,模塊的全量也是模塊的一個子集,所以也應該支撐導入全量。即:
from 模塊名 import *
【3】import 語句和 from...import 語句的區別
import 導入的是模塊。from...import 導入的是模塊中的一個函數/一個類。
如果進行類比的話,import 導入的是“文件”,我們要使用該“文件”下的內容,必須前面加“文件名稱”。from...import 導入的是文件下的“內容”,我們直接使用這些“內容”即可,前面再也不需要加“文件名稱”了。
現在我們通過導入自己編寫的一個模塊來作案例進行理解。
- 包含加法函數add();
- 包含減法函數minus();
- 包含打印數字的函數MyNum()。
【結論】
- import導入的模塊,要調用其下的方法或成員,需要加上模塊名作為前綴;
- from……import導入模塊下的方法或成員,則直接用方法或成員名即可實現調用。
閱讀更多 職說職語 的文章