備忘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!了

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章