舉個例子浊仆,一個abc.py
的文件就是一個名字叫abc
的模塊记焊,一個xyz.py
的文件就是一個名字叫xyz
的模塊酣溃。
現(xiàn)在瘦穆,假設(shè)我們的abc
和xyz
這兩個模塊名字與其他模塊沖突了,于是我們可以通過包來組織模塊赊豌,避免沖突扛或。方法是選擇一個頂層包名,比如mycompany
碘饼,按照如下目錄存放:
mycompany
├─__init__.py
├─ abc.py
└─ xyz.py
引入了包以后熙兔,只要頂層的包名不與別人沖突,那所有模塊都不會與別人沖突“眨現(xiàn)在住涉,abc.py
模塊的名字就變成了mycompany.abc
,類似的钠绍,xyz.py
的模塊名變成了mycompany.xyz
舆声。
請注意,每一個包目錄下面都會有一個__init__.py
的文件柳爽,這個文件是必須存在的媳握,否則,Python就把這個目錄當(dāng)成普通目錄磷脯,而不是一個包蛾找。__init__.py
可以是空文件,也可以有Python代碼赵誓,因?yàn)?code>__init__.py本身就是一個模塊打毛,而它的模塊名就是mycompany
。
類似的俩功,可以有多級目錄隘冲,組成多級層次的包結(jié)構(gòu)。比如如下的目錄結(jié)構(gòu):
mycompany
├─ web
│ ├─ __init__.py
│ ├─ utils.py
│ └─ www.py
├─ __init__.py
├─ abc.py
└─ xyz.py
文件www.py
的模塊名就是mycompany.web.www
绑雄,兩個文件utils.py
的模塊名分別是mycompany.utils
和mycompany.web.utils
展辞。
自己創(chuàng)建模塊時要注意命名,不能和Python自帶的模塊名稱沖突万牺。例如罗珍,系統(tǒng)自帶了sys模塊洽腺,自己的模塊就不可命名為sys.py
,否則將無法導(dǎo)入系統(tǒng)自帶的sys模塊覆旱。
mycompany.web
也是一個模塊蘸朋,請指出該模塊對應(yīng)的.py文件。
總結(jié)
模塊是一組Python代碼的集合扣唱,可以使用其他模塊藕坯,也可以被其他模塊使用。
創(chuàng)建自己的模塊時噪沙,要注意:
模塊名要遵循Python變量命名規(guī)范炼彪,不要使用中文、特殊字符正歼;
模塊名不要和系統(tǒng)模塊名沖突辐马,最好先查看系統(tǒng)是否已存在該模塊,檢查方法是在Python交互環(huán)境執(zhí)行import abc局义,若成功則說明系統(tǒng)存在此模塊喜爷。