Python中的if __name__ == '__main__'

問題

查看別人的代碼常常會出現 if name == 'main',這是什麼意思呢,有什麼做用?python

因爲每一個python模塊(python文件)都包含內置的變量name,當運行模塊被執行的時候,name等於文件名(包含了後綴.py)。若是import到其餘模塊中,則name等於模塊名稱(不包含後綴.py)。而「main」等於當前執行文件的名稱(包含了後綴.py)。因此當模塊被直接執行時,name == 'main'結果爲真;而當模塊被import到其餘模塊中時,name == 'main'結果爲假,就是不調用對應的方法。shell

測試

咱們能夠寫兩個簡單的程序來觀察這句話的做用:測試

# a.py
import b

code

# b.py
print "Hello World from %s!" % __name__

if __name__ == '__main__':
    print "Hello World again from %s!" % __name__

運行它們獲得輸出:get

$ python a.py
Hello World from b!

你能夠發現,當一個程序做爲模塊被導入時,Python將這個模塊裏的 global()['name'] 設置爲模塊名,此外,導入後模塊中的全部代碼都將執行,但此時if語句的條件爲False,因此不會執行。io

$ python b.py
Hello World from __main__!
Hello World again from __main__!

你能夠發現,當程序做爲文件被執行時,Python將這個文件裏的 global()['name'] 設置爲 「main」,此時if條件成立,裏面的語句被執行。class

參考連接:import

一、https://www.shiyanlou.com/questions/102607變量

二、https://stackoverflow.com/questions/419163/what-does-if-name-main-do程序

相關文章
相關標籤/搜索