查看別人的代碼常常會出現 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程序