python之if __name__ == '__main__'

對(duì)于Python初學(xué)者來(lái)說(shuō),在看別人代碼時(shí)經(jīng)常會(huì)看到if __name__ == "__main__",對(duì)于剛接觸python的我們來(lái)說(shuō),不太明白這個(gè)代碼的作用,也許我們一直在用,但是其實(shí)很多人并沒(méi)有詳細(xì)去了解過(guò)這段代碼的意義。
這里,讓我們來(lái)看看這句代碼到底有何意義,又該在何種情境下使用?

python文件執(zhí)行的兩種方法:

一個(gè)python文件通常有兩種使用方法,第一是作為腳本直接執(zhí)行,第二是 import 到其他的 python 腳本中被調(diào)用(模塊重用)執(zhí)行。因此if __name__ == 'main': 的作用就是控制這兩種情況執(zhí)行代碼的過(guò)程,在if __name__ == 'main': 下的代碼只有在第一種情況下(即文件作為腳本直接執(zhí)行)才會(huì)被執(zhí)行,而 import 到其他腳本中是不會(huì)被執(zhí)行的。舉例說(shuō)明如下:

只要你創(chuàng)建了一個(gè)模塊(一個(gè).py文件),這個(gè)模塊就有一個(gè)內(nèi)置屬性name生成,該模塊的 name 的值取決于如何應(yīng)用這個(gè)模塊。說(shuō)人話就是,如果你直接運(yùn)行該模塊,那么__name__ == "__main__";如果你 import 一個(gè)模塊,那么模塊name 的值通常為模塊文件名。
如,創(chuàng)建一個(gè)test1.py:

def func():
    print('hello, world!')

if __name__ == "__main__":
    func()

模塊中,首先定義了函數(shù)func(),用來(lái)打印出hello, world!,然后判斷__name__是否等于 __main__,如果等于,有打印,反之則反,現(xiàn)在運(yùn)行該模塊,結(jié)果為:

hello, world!

說(shuō)明__name__ 等于__main__。
這時(shí),輸入代碼:
再創(chuàng)建一個(gè)test2.py:

import test1

print('bye, world!')

模塊中,首先import test1,然后打印bye, world!做測(cè)試用,運(yùn)行該模塊,結(jié)果為:
bye, world!
運(yùn)行結(jié)果僅有bye, world!,說(shuō)明__name__不等于__main__。

通過(guò)上面test1.py和test2.py兩個(gè)模塊,我們現(xiàn)在可以得出一個(gè)非常實(shí)用的結(jié)論:
如果模塊是被直接運(yùn)行的,則代碼塊被運(yùn)行,如果模塊被import,則代碼塊不被運(yùn)行。

?著作權(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ù)。

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