當你打開一個.py文件時,常常會在代碼的最下面看到if __name__ == '__main__':,如今就來介 紹一下它的做用:java
對於編程語言來講,程序都必需要有一個入口,好比java和c#必需要有一個包含main方法的主類來做爲程序的入口
而python則不一樣,它屬於腳本語言,它是從腳本的第一行開始執行,沒有統一的入口。python
一個python的文件有兩種使用的方法,第一是直接做爲腳本執行,第二是import到其餘的python腳本中被調用(模塊重用)執行。
if __name__ == '__main__' 就至關因而 Python 模擬的程序入口,因爲模塊之間相互引用,不一樣模塊可能都有這樣的定義,而入口程序只能有一個。到底哪一個入口程序被選中,這取決於 __name__ 的值。編程
__name__ 是內置變量,用於表示當前模塊的名字,若是一個模塊被直接運行,其 __name__ 值爲 __main__。c#
if __name__ == 'main': 的做用就是控制這兩種狀況執行代碼的過程,在if __name__ == 'main': 下的代碼只有在第一種狀況下(即文件做爲腳本直接執行)纔會被執行,而import到其餘腳本中是不會被執行的。編程語言
舉個例子,下面在test.py中寫入以下代碼:spa
print "I am the first" if __name__=="__main__": print "I am the second"
直接執行test.py 會打印兩行 :blog
I am the first I am the second
而後在同一文件夾新建名稱爲import_test.py的腳本,只輸入如代碼:class
import test
執行 import_test.py ,只打印一行 「I am the first」,說明 if __name=="__main__":後面的代碼沒有執行test
咱們在test.py腳本的if __name__=="__main__":以前加入print __name__,即將__name__打印出來。文件內容和結果以下import
print "I am the first" print __name__ if __name__=="__main__": print "I am the second"
I am the first __main__ I am the second
能夠看出,此時變量__name__的值爲"__main__";
再執行import_test.py,模塊內容和執行結果以下
I am the first test
此時,test.py中的__name__變量值爲test,不知足__name__=="__main__"的條件,所以,沒法執行其後的代碼。