(python)if __name__ == '__main__':

學(xué)習(xí)的python教程是Python-100-Days


在學(xué)習(xí)第6課“函數(shù)與模塊的使用”時(shí)遇到了這樣一道例題:

# module3.py

def foo():

????pass

def bar():

????pass

# __name__是Python中一個(gè)隱含的變量它代表了模塊的名字

# 只有被Python解釋器直接執(zhí)行的模塊的名字才是__main__

if __name__ == '__main__':

????print('call foo()')

????foo()

????print('call bar()')

????bar()

其中if __name__ == '__main__':并沒(méi)有解釋的很清楚(好的這下大家都知道我是純粹的小白了)

這里查了一些資料,下面是我自己的理解:

if __name__ == '__main__':

__name__是python隱含的一個(gè)變量,它會(huì)根據(jù)實(shí)際情況被賦予不同的值。在這個(gè)例子中,如果直接運(yùn)行這段代碼(也就是說(shuō)把這段代碼作為主程序來(lái)運(yùn)行),這時(shí)__name__會(huì)被賦新值‘__main__’,這樣一來(lái) if條件為真,執(zhí)行接下來(lái)的語(yǔ)句。如果用另一個(gè)程序調(diào)用module3(這段代碼的名稱是module3.py),那么__name__會(huì)被賦值為module3,‘module3’ 不等于‘__main__’,if條件為假,不執(zhí)行接下來(lái)的程序。


if __name__ == '__main__':

問(wèn)題是為什么要有這樣一個(gè)判斷語(yǔ)句?

因?yàn)閜ython在調(diào)用一個(gè)函數(shù)的時(shí)候,會(huì)直接運(yùn)行里面所有的代碼。舉個(gè)例子,我們?cè)趯?xiě)函數(shù)的時(shí)候?yàn)榱薲ebug會(huì)寫(xiě)一堆print(),但是在正式調(diào)用的時(shí)候不希望這些print輸出,那我們就可以把這些print()寫(xiě)進(jìn)if判斷里。

關(guān)于這條代碼的解釋,我主要參考了stackOverflow上的回答:What does if __name__ == “__main__”: do?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容