1. 程式人生 > >備忘if __name__ == '__main__'

備忘if __name__ == '__main__'

 

轉自https://blog.csdn.net/weixin_41656968/article/details/80150543


剛開始學習python的時候,我對if __name__ == '__main__' 這句話實在是不能理解

就算當天理解了,也馬上就忘得一乾二淨。在此小小記錄一下

 

可能我這個新手對python的理解不夠深刻,我的語言可能比較通俗沒有內涵

依我淺顯的理解,比如說:

if __name__ == '__main__':
    main()

就是如果執行的是主函式的話,我們執行下一句main(),如果作為模組被其他檔案匯入使用的話,我們就不執行後面的main()什麼的。

 

下面來看例子:

# test.py
def main():
   print('Hello, world!')
   
main()

這只是一個列印 Hello,world! 的簡單程式

 

我們再嘗試從其他檔案呼叫它:

# test1.py
import test

test.main()

 

我們執行test1.py

我們站在程式的角度思考,①Hello,world!來自於test.py中的main(),②Hello,world!來自於test1.py中的test.main(),造成最後輸出兩個Hello,world!

我們原來只想呼叫test裡面的main函式列印一次Hello,world!,可是這裡卻列印了兩次,違背了我們的本意

想讓test1.py只輸出一個Hello,world!的話,我們可以在test.py中去掉最後一行執行的main(),但是這會使test.py執行的時候什麼也不列印

這裡我們既想讓test.py執行輸出結果,又想呼叫的時候不重複,就需要使用if __name__ == '__main__'

 

這是我們修改之後的test.py:

# test.py
def main():
   print('Hello, world!')
   
if __name__=='__main__':
   main()

這樣,我們就只在執行test.py的時候會列印這個Hello,world!

 

但我們在執行test1.py的時候,if __name__ == '__main__'這個語句就不成立,那麼test.py中的Hello,world!就不會列印

只會列印test1中的Hello,world!

執行如下:

這樣就只剩下一個Hello,world!了

 

怎麼樣,我解釋的夠通俗易懂吧。。。