天天看點

python中 if __name__ == "__main__"的作用

開門見山地說,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
           
  • 總結如下:
  1. 腳本作為子產品被導入時, 子產品中

    if __name__ == "__main__"

    不會被執行,可作為測試使用。
  2. 隻有被執行的腳本,

    if __name__ == "__main__"

    才會作為函數入口被執行。
  3. 作為子產品導入時,發現__name__的值發生變化,由__main__變成module檔案名。
  4. 結合以上了解就不難發現

    if __name__ == "__main__"

    的判斷語句的意義。

建議:無論何時作為腳本都給你的程式寫上

if __name__ == "__main__"

的入口,因為這樣對整個程式的組織結構是有益處的。