在py文件中經(jīng)潮久看到圖中這句代碼疫衩,初學(xué)者,特別是學(xué)習(xí)過其他語言荣德,非系統(tǒng)的學(xué)習(xí)python基礎(chǔ)語法的闷煤,看到它都會(huì)有些懵,它是做啥的涮瞻?為什么要這樣做鲤拿?
"__name__" 示例
一、__name__的作用:
__name__是python的一個(gè)內(nèi)置類屬性署咽,它存儲(chǔ)模塊的名稱近顷。
python的模塊既可以被調(diào)用,也可以獨(dú)立運(yùn)行宁否。而被調(diào)用時(shí)__name__存儲(chǔ)的是py文件名(模塊名稱)窒升,獨(dú)立運(yùn)行時(shí)存儲(chǔ)的是"__main__"。
那么它的作用主要就是用來區(qū)分家淤,當(dāng)前模塊是獨(dú)立運(yùn)行還是被調(diào)用异剥。
二、代碼中的具體的應(yīng)用
具體情境:
1絮重、項(xiàng)目經(jīng)理給你安排一個(gè)任務(wù)冤寿,做一個(gè)創(chuàng)建一個(gè)組合列表的模塊
2、我們編寫過程青伤,一般會(huì)在結(jié)尾督怜,寫上一些測試信息來檢測效果、調(diào)試狠角。
# BuildComb.py
from itertools import combinations
def build_combination(n,k):
result = combinations(range(n),k)
return result
#以下為針對(duì)模塊的測試信息
a = build_combination(4, 3)
for i in a:
print(i)
3号杠、這樣問題就產(chǎn)生了,經(jīng)理調(diào)用你的模塊時(shí),會(huì)運(yùn)行你的測試內(nèi)容姨蟋,如圖:
調(diào)用該模塊的效果
***當(dāng)然你可能會(huì)想屉凯,沒關(guān)系的,我只要給經(jīng)理之前刪除測試相關(guān)內(nèi)容眼溶,問題就解決了悠砚。
是的確實(shí)可行,只是通常經(jīng)理可能會(huì)發(fā)現(xiàn)模塊的問題堂飞,或者是實(shí)現(xiàn)的效果需要調(diào)整灌旧,那么我們?cè)俅涡薷哪K,又需要添加這些測試信息绰筛,交付的時(shí)候還需要?jiǎng)h除它枢泰。顯然它不是最佳方案。
4铝噩、這時(shí)只要在測試內(nèi)容前面添加這句代碼 (完整代碼見:圖1("__name__" 示例))
if __name__ == '__main__':
那么衡蚂,在調(diào)用該模塊時(shí) __name__ 返回模塊名稱 BuildComb,也就是薄榛!= '__main__', 自然測試內(nèi)容就不會(huì)被運(yùn)行讳窟。反之,自己編寫調(diào)試時(shí)敞恋,單獨(dú)運(yùn)行模塊則會(huì)運(yùn)行測試內(nèi)容丽啡。