模塊化

在Python中,一個.py文件就稱之為一個模塊(Module),為了避免模塊名沖突,Python又引入了按目錄來組織模塊的方法,稱為包(Package)。舉個例子,一個abc.py的文件就是一個名字叫 abc 的模塊,一個 xyz.py 的文件就是一個名字叫xyz的模塊.現(xiàn)在,假設(shè)我們的abc和xyz這兩個模塊名字與其他模塊沖突了,于是我們可以通過包來組織模塊,避免沖突。選擇一個頂層包名,比如mycompany,按照如下目錄存放:

mycompany

├─ __init__.py

├─ abc.py

└─ xyz.py

引入了包以后,只要頂層的包名不與別人沖突,那所有模塊都不會與別人沖突?,F(xiàn)在,abc.py 模塊的名字就變成了mycompany.abc,類似的,xyz.py的模塊名變成了mycompany.xyz。

請注意,每一個包目錄下面都會有一個__init__.py的文件,這個文件是必須存在的,否則,Python就把這個目錄當(dāng)成普通目錄,而不是一個包。__init__.py可以是空文件,也可以有Python代碼,因?yàn)? __init__.py本身就是一個模塊,而它的模塊名就是mycompany

自定義模塊

我們可以自己寫一個模塊,但是注意模塊命名的時候要注意以下幾點(diǎn):

1、模塊名要遵循Python變量命名規(guī)范,不要使用中文、特殊字符

2、模塊名不要和系統(tǒng)模塊名沖突,*先查看系統(tǒng)是否已存在該模塊,檢查方法是在Python交互環(huán)境執(zhí)行 import abc,若成功則說明系統(tǒng)存在此模塊。

我們現(xiàn)在自己寫了一個模塊,circles.py

circles.py

這里我們要提到 __name__ 屬性。每個模塊都有 __name__ 屬性。如果我們是在本模塊運(yùn)行的話,__name__屬性的值為__main__,如果是其他模塊導(dǎo)入該模塊的話,該模塊的__name__屬性值為包名。

所以我們這里判斷了__name__=='__main__',如果相等的話,就測試運(yùn)行代碼。當(dāng)其他模塊導(dǎo)入我們模塊的話,這里面的測試代碼不會執(zhí)行

模塊的內(nèi)置屬性

1、__doc__:模塊中用于描述的文檔字符串

2、__name__:模塊名

3、__file__:模塊保存的路徑

模塊的內(nèi)置屬性

導(dǎo)入模塊

假如我們現(xiàn)在要在其他模塊導(dǎo)入我們自己寫的模塊的話,可以有下面幾種方法。我們得把我們的包放在python能找到的環(huán)境變量的路徑下面。然后就可以導(dǎo)入。

導(dǎo)入模塊