1、Python內(nèi)置了發(fā)許多有用的模塊丹弱,只要安裝完畢昆禽,這些模塊就能立刻使用茬缩。
#!/usr/bin/env python3
# -*-coding: utf-8 -*-
' a test module'
__author__='啰嗦ing'
import sys
def test():
args=sys.argv
if len(args)==1:
print("Holle World")
elif len(args)==2:
print("Holle, %s!" % arges[1])
else:
print('Too many arguments!')
if __name__=='__main__':
test()
第一行和第二行是標(biāo)磚注釋?zhuān)谝恍凶⑨尶梢宰屵@個(gè)hello.py文件直接在Unix/linux/Mac上運(yùn)行卿拴,第二行注釋表示.py文件本身使用標(biāo)準(zhǔn)UTF-8編碼;
第四行是一個(gè)字符串梨与,表示模塊的文檔注釋?zhuān)魏文K的第一個(gè)字符串都被視為模塊的文檔注釋?zhuān)?br>
第六行代碼author變量把作者寫(xiě)進(jìn)去堕花,這樣當(dāng)別人公開(kāi)你得代碼的時(shí)候別人就能看到你的大名
以上就是Python模塊的標(biāo)準(zhǔn)文件模板,淡然也可以刪掉不寫(xiě)粥鞋,但是按標(biāo)準(zhǔn)辦事肯定沒(méi)錯(cuò)缘挽。
你可能注意到了,是用sys模塊的第一步就是導(dǎo)入該模塊呻粹;
import sys
到入該模塊后壕曼,我們就有了變量sys指向該模塊,利用sys這個(gè)變量等浊,就可以訪問(wèn)sys模塊的所有功能腮郊。
sys模塊有一個(gè)argv變量,用list存儲(chǔ)了明良航的所有參數(shù)筹燕。argv至少有一個(gè)元素轧飞,因?yàn)榈谝粋€(gè)參數(shù)永遠(yuǎn)是改.py文件的名稱(chēng),例如:
運(yùn)行Python3 hello.py獲得的sys.argv就是['hello.py']
運(yùn)行Python3 hello.py aaa 獲得的sys.srgv就是['hello.py','aaa']
最后撒踪,注意到這兩行代碼:
if __name__=='__main__:
test()
當(dāng)我們命令行運(yùn)行hello模塊文件時(shí)过咬,Python解釋器把一個(gè)特殊變量__name__ 置為_(kāi)_main__,
兒如果在其他地方導(dǎo)入該hello模塊時(shí),if判斷將失效制妄,因此掸绞,這種if測(cè)試可以讓一個(gè)模塊通過(guò)命令行運(yùn)行時(shí)執(zhí)行一些額外的代碼,最常見(jiàn)的就是運(yùn)行測(cè)試耕捞。
我們可以用命令行運(yùn)行hello.py看看效果:
$ python3 hello.py
Hello,world衔掸!
$ python hello.py aaa
Hello aaa!
如果啟動(dòng)Python交互環(huán)境,在導(dǎo)入hello模塊:
$ python3
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello
導(dǎo)入時(shí)俺抽,沒(méi)有打印Hello,world!,因?yàn)闆](méi)有執(zhí)行test()函數(shù)具篇,
調(diào)用test()函數(shù)的時(shí)候才能打印Hello,world!:
hello.test()
Hello,world!
最后提一下作用域:
在一個(gè)模塊中,我們可能定義很多函數(shù)和變量凌埂,但有的變量和函數(shù)我們僅僅希望在內(nèi)部調(diào)用驱显。在Python中我們通過(guò)/_ 來(lái)實(shí)現(xiàn),
正常的函數(shù)和變量是公開(kāi)的,我們自己定義的/_privatexxx變量名函數(shù)或者變量就是非公開(kāi)的埃疫,不應(yīng)該被直接引用伏恐,
之所以說(shuō)private這樣的函數(shù)或者變量不應(yīng)該被直接應(yīng)用,而不是不能被直接應(yīng)用栓霜,是因?yàn)镻ython并沒(méi)有一種方法可以完全限制訪問(wèn)private函數(shù)或者變量翠桦,但是從編成習(xí)慣上不應(yīng)該被直接引用。
在一個(gè)模塊里外部不需要的函數(shù)和變量我們就可以定義成private胳蛮,只有外部需要的引用才定義成public销凑。