開門見山地說,python中
if __name__ == "__main__"
的作用是作為程式運作的入口。(任何程式都隻能有一個入口)
如果寫一個獨立的簡單的腳本,那麼我們會發現腳本是順序執行的。似乎沒有
if __name__ == "__main__"
程式也能正常運作,例如:
for i in range(10):
if i % 2 == 0:
print(i)
輸出:0 2 4 6 8
程式是不受影響。對于想對大一些的腳本(結構上),如果我們有這樣兩個腳本(在一個檔案夾下),一個作為子產品被引用,一個作為主程式運作。其中module.py檔案内容如下:
print('this is module.py')
def main():
print('name is %s' % __name__)
if __name__ == "__main__":
main()
main.py檔案如下:
import module
if __name__ == "__main__":
module.main()
單獨運作module.py結果:
this is module.py
name is __main__
運作main.py結果如下:
this is module.py
name is module
- 總結如下:
- 腳本作為子產品被導入時, 子產品中
不會被執行,可作為測試使用。if __name__ == "__main__"
- 隻有被執行的腳本,
才會作為函數入口被執行。if __name__ == "__main__"
- 作為子產品導入時,發現__name__的值發生變化,由__main__變成module檔案名。
- 結合以上了解就不難發現
的判斷語句的意義。if __name__ == "__main__"
建議:無論何時作為腳本都給你的程式寫上
if __name__ == "__main__"
的入口,因為這樣對整個程式的組織結構是有益處的。