備忘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!了
怎麼樣,我解釋的夠通俗易懂吧。。。