預設情況下,所有的成員都會被匯入。但可以修改__all__變數控制哪些成員可以被匯入。該變數是字串列表(或元組),內部元素是可被匯入的成員名。
示例請看下圖:test1模組中有name、age、height三個成員,__all__變數儲存了這三個成員名。test2模組用from test1 import *匯入test1所有成員,此時test2模組可以正常使用test1的三個成員。
再看下圖:test1模組中__all__變數儲存了三個成員名,但注釋了height這個成員(注意列表的書寫方式,乙個元素一行,用ctrl+/注釋不能被匯入的成員非常方便。如果所有內容寫在一行時就不能注釋內部元素,只能刪除),test2模組用from test1 import *匯入test1的所有成員,此時只能使用name和age這兩個成員,height成員不能使用。
注意:使用import 模組時,__all__不起作用。請看下圖示例,test2模組用import test1匯入test1的所有成員後,即使test1的height成員在__all__變數中被注釋了,仍然可以正常使用。
在大型專案中經常會遇到模組檔案很多的情況,為了方便管理一般會按功能分別建立多個資料夾,在不同資料夾下各自有多個模組,各個模組之間還存在相互引用的情況。今天先梳理一種絕對匯入的方法。
有乙個專案,路徑是d:python自學筆記模組,在該專案下有多個模組和資料夾,其中aa資料夾下有b資料夾,b資料夾內有bb.py模組。
注意紅圈的內容,實際上python直譯器會在載入.py檔案時自動生成sys.path列表資訊,sys.path[0]是當前模組的完整路徑,sys.path[1]是當前模組的專案路徑。
現bb模組需要呼叫cc模組的成員num2,可以通過from aa.c.cc import *的方法,其中b模組已知專案路徑是「d:python自學筆記模組」,然後加上aa資料夾名再加上.c資料夾名再加.cc模組名,即可絕對匯入cc.py模組中所有的成員。
在專案路徑「d:python自學筆記模組」下有test_import.py模組,可以通過絕對匯入的方式匯入bb模組(另外bb模組中已經絕對匯入cc模組,所以相當於同時匯入了bb和cc),還可以通過import匯入同路徑下的test1模組。
絕對路徑匯入方法簡潔易懂,要參與大型專案必須得學會這項技能。深入學python的朋友們最好自行敲**多多練習加以熟練掌握。
python模組之shutil模組
高階的 檔案 資料夾 壓縮包 處理模組 shutil.copyfileobj fsrc,fdst length 將檔案內容拷貝到另乙個檔案中 import shutil shutil.copyfileobj open old.xml r open new.xml w shutil.copyfile ...
python模組之timeit模組
timeit模組用來測量函式執行時間,通過實際 學習怎樣應用timeit模組 fromtimeitimport print timeit x 7 print timeit x 7 number 1000000 print timeit x 7 number 1000000 print 上面三個列印說...
python模組 之 re模組
功能 實現python對正規表示式對支援與應用,將想要得到對內容按照正規表示式匹配出來 應用場景 爬蟲指令碼 對使用者輸入內容進行合規檢查 如qq格式檢查 等 功能 匹配物件中所有符合正規表示式的內容,並取出來 返回值 列表,所匹配到對項都會返回到列表中 import re content 1362...