在編寫規範的Python指令碼中,經常會出現以下函式:

> if __name__ == "__main__" 

初學者可能會產生迷惑,其實它就是一個特殊的函式,類似於我們用 def 定義的,下面來解釋一下。

    -

1、這段程式碼的功能

一個 python 檔案通常有兩種使用方法:

(1) 直接作為指令碼執行;

(2) 作為庫檔案被匯入(import)其他python檔案被呼叫(模組重用)。

if __name__=='__main__' 後面的程式碼,只有在第一種情況下才會被執行。

2、執行的原理

每個python模組(python檔案,也就是此處的test.py和import_test.py)都包含內建的變數__name__

(1)對於第一種情況,即模組被直接執行的時候,__name__ 等於檔名(包含了字尾.py),即 __name__==test.py

(2)對於第二種情況,如果import到其他模組中,__name__ 等於模組名稱(不包含字尾.py),即 __name__==test

(3)而__main__等於當前執行檔案的名稱(包含了字尾.py)。

因此,

(1) 當模組被直接執行時,__main__==__name__==test.py, __name__ == '__main__' 結果為真。

(2) 當模組被 import 到其他模組, __main__==import_test.py,而 __name__==test__name__==__main__結果為假。

3.舉個例子:

(1) 假設 test1.py檔案裡的內容是

這裡寫圖片描述

(2) import_test1.py檔案的內容只有一句話 ( import_test1.py 和test1.py 放在同一個資料夾)

這裡寫圖片描述

**

那麼,

**
(1) test1.py的執行結果:

這裡寫圖片描述

(2) Import_test1.py的執行結果:

這裡寫圖片描述

[參考教程]
[1] if name == ‘main’ 如何正確理解?