python模塊對(duì)應(yīng)python程序文件,每個(gè)python文件都是一個(gè)模塊。
模塊a.py導(dǎo)入模塊b.py后,在a.py可以使用使用b.py的全部變量。
1.1 python程序組成
python程序通常包括頂層主體文件、模塊文件、標(biāo)準(zhǔn)庫文件。
頂層主體文件通常是程序運(yùn)行入口,會(huì)導(dǎo)入模塊文件,模塊文件導(dǎo)入標(biāo)準(zhǔn)庫文件。
如上圖,main.py為頂層主體文件,程序從此文件開始運(yùn)行。
main文件導(dǎo)入mod1.py模塊文件,使用里面的模塊屬性。
mod1.py模塊文件導(dǎo)入mod2.py和標(biāo)準(zhǔn)庫模塊文件。
標(biāo)準(zhǔn)庫模塊文件為python自帶模塊文件。
1.2 python導(dǎo)入模塊
python導(dǎo)入模塊在程序運(yùn)行時(shí)執(zhí)行。
python首次導(dǎo)入模塊,會(huì)執(zhí)行三個(gè)步驟:
步驟 | 步驟名稱 | 步驟描述 |
---|---|---|
1 | 搜索 | 通過模塊搜索路徑找到模塊文件 |
2 | 按需編譯 | 首次導(dǎo)入需要編譯,生成.pyc文件。若.pyc文件時(shí)間戳小于.py文件,則進(jìn)行編譯。只有.pyc則直接加載,不進(jìn)行編譯。 |
3 | 運(yùn)行 | 從上到下執(zhí)行模塊代碼,創(chuàng)建模塊定義的對(duì)象。 |
python將導(dǎo)入的模塊存儲(chǔ)到sys.modules字典中,
每次導(dǎo)入模塊時(shí)檢查sys.modules是否存要導(dǎo)入的模塊,
若存在,則不再導(dǎo)入(跳過首次導(dǎo)入模塊的3個(gè)步驟),直接從內(nèi)存獲取模塊,
若不存在,則執(zhí)行首次導(dǎo)入模塊的3個(gè)步驟。
注:導(dǎo)入模塊后,模塊文件被更新,通過reload導(dǎo)入最新模塊文件。
1.3 python模塊搜索路徑
python通過模塊搜索路徑找到模塊文件進(jìn)行導(dǎo)入。
按下面順序搜索模塊搜索路徑,這4個(gè)路徑組成sys.path:
順序 | 路徑 |
---|---|
1 | 程序主目錄 |
2 | PYTHONPATH目錄(若有),用于路徑拓展 |
3 | 標(biāo)準(zhǔn)庫目錄 |
4 | .pth文件(若有),用于路徑拓展 |
1.4 python模塊路徑sys.path
python的模塊搜索路徑保存在sys.path列表。
手動(dòng)添加到sys.path列表的路徑,在程序結(jié)束后,將不會(huì)再生性。
1.5 python模塊避免重名
模塊搜索路徑存在重名模塊時(shí),導(dǎo)入的模塊存在不確定性,所以pthon模塊應(yīng)該避免重名。
-
模塊
+關(guān)注
關(guān)注
7文章
2722瀏覽量
47574 -
編程語言
+關(guān)注
關(guān)注
10文章
1947瀏覽量
34820 -
python
+關(guān)注
關(guān)注
56文章
4800瀏覽量
84820
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論