為了編寫可維護的代碼,我們把很多函數(shù)分組橱鹏,分別放到不同的文件里膜蠢,這樣,每個文件包含的代碼就相對較少莉兰,很多編程語言都采用這種組織代碼的方式挑围。
在Python中,一個.py
文件就稱之為一個模塊(Module)糖荒。
使用模塊的好處:
1.提高了代碼的可維護性
2.提高了代碼的復(fù)用性
3.避免名字沖突
為避免模塊名重復(fù)杉辙,Python又引入了按目錄來組織模塊的方法,稱為包(Package)捶朵。
引入了包以后蜘矢,只要頂層的包名不與別人沖突狂男,那所有模塊都不會與別人沖突。
例如上述的abc.pt
模塊的名字就變成了mycompany.abc
每一個包目錄下面都會有一個__init__.py
的文件品腹,這個文件是必須存在的岖食,否則,Python就把這個目錄當(dāng)成普通目錄舞吭,而不是一個包泡垃。
__init__.py
可以是空文件,也可以有Python代碼羡鸥,因為__init__.py
本身就是一個模塊蔑穴,而它的模塊名就是mycompany
。
類似的惧浴,可以有多級目錄存和,組成多級層次的包結(jié)構(gòu)。
文件www.py
的模塊名就是mycompany.web.www
自己創(chuàng)建模塊時要注意命名赶舆,不能和Python自帶的模塊名稱沖突哑姚。例如,系統(tǒng)自帶了sys模塊芜茵,自己的模塊就不可命名為sys.py叙量,否則將無法導(dǎo)入系統(tǒng)自帶的sys模塊。
模塊是一組Python代碼的集合九串,可以使用其他模塊绞佩,也可以被其他模塊使用。
創(chuàng)建自己的模塊時猪钮,要注意:
1.模塊名要遵循Python變量命名規(guī)范品山,不要使用中文、特殊字符烤低;
2.模塊名不要和系統(tǒng)模塊名沖突肘交,最好先查看系統(tǒng)是否已存在該模塊,檢查方法是在Python交互環(huán)境執(zhí)行import abc扑馁,若成功則說明系統(tǒng)存在此模塊涯呻。
使用模塊
例如:編寫一個hello.py
模塊
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' a test module '
__author__ = 'Michael Liao'
#使用sys模塊的第一步,就是導(dǎo)入該模塊:
import sys
def test():
args = sys.argv
if len(args)==1:
print('Hello, world!')
elif len(args)==2:
print('Hello, %s!' % args[1])
else:
print('Too many arguments!')
if __name__=='__main__':
test()
在存放編寫模塊的文件下啟動Python交互環(huán)境腻要,再導(dǎo)入hello模塊复罐。
導(dǎo)入時,沒有打印Hello, word!雄家,因為沒有執(zhí)行test()
函數(shù)效诅。
調(diào)用hello.test()
時,才能打印出Hello, word!