__name__是內置變量,可用於表示當前模塊的名字,而「__main__」等於當前執行文件的名稱。 兩個名稱搞不清不要緊,往下看待會解釋python
對不少編程語言來講,程序都須要一個入口,例如C系列、Java,都須要有一個main函數做爲程序的入口,而python做爲腳本語言則不同,從第一行就開始執行,並無統一的入口。編程
一個python的文件有兩種使用的方法,第一是直接做爲腳本直接執行,第二是import到其餘的python腳本中做爲模塊被調用執行。可是在被看成模塊導入的時候總有一部分代碼是不但願被運行的,而 if __name__ == '__main__' : 的做用就是控制兩種狀況下代碼的運行。
編程語言
print(__name__) print("this is song ") if __name__=='__main__': print("this is songsong ")
此時 if __name__=='__main__': 以前的語句被執行,以後的語句也被執行函數
第二種狀況被導入其餘文件調用this
from practice import b
小提示:此處導入了第一個文件,因此會執行第一個文件的代碼,不要問爲何第二個文件沒代碼spa
此時 if __name__=='__main__': 以前的語句被執行,以後的語句沒有被執行code
小結:文件直接運行時,if __name__=='__main__':以後的語句會被執行;當文件被看成模塊導入到其餘文件時,if __name__=='__main__':以後的語句不會被執行blog
此時回到第一行,開始解釋!io
上述兩個文件第一個 print(__name__) 結果爲__main__,第二個print(__name__)結果爲practice.bclass
__main__不管什麼時候都是表示當前執行文件的名字,而__name__表示當前模塊的名字
若是沒有引用模塊直接執行文件,__name__就等於__main__;若是導入了模塊,__name__就等於模塊名(例如:practice.b)
新手上路,多謝指教!