模塊化

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

mycompany

├─ __init__.py

├─ abc.py

└─ xyz.py

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

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

自定義模塊

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

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

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

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

circles.py

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

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

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

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

2、__name__:模塊名

3、__file__:模塊保存的路徑

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

導(dǎo)入模塊

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

導(dǎo)入模塊