在一些python程式碼中常常會看到__name__==”__main__”這段,這是代表什麼意思呢?
在多檔案的程式架構中,函式被重複使用的機率相當高,這時候就要對主程式跟函式分清楚了。
在python中常常可以看到以下這段,他代表什麼意思呢?
1 2 |
if __name__ == "__main__": function_A() |
這邊我們用兩支程式來打個比方,
分別叫做 programA.py 與 programB.py。
programA.py:
1 2 3 4 5 |
def function_A(): print("AAA") print("using program A") function_A() |
programB.py:
1 2 3 4 |
from programA import function_A print("using program B") function_A() |
看完以上兩支程式,
我們先使用command line執行programA.py,
可以得到以下結果。
1 2 |
using program A AAA |
再來,我們執行programB.py。
1 2 3 4 |
using program A AAA using program B AAA |
上面可以發現,在執行programB.py時,
在引用的過程就先執行一遍programA.py的程式碼了,
所以為了避免發生此情況,
我們要了解python程式的基礎執行方式。
python中的__name__是隱藏變數,
代表的是『模組名稱』,
若該檔案是被引用,則其__name__就會是模組名稱,
若是直接由命令列執行,其值會是__main__。
由上方的介紹,我們就可以利用__name__的特性來讓某些程式獨立執行。
我們將programA.py修改如下:
1 2 3 4 5 6 |
def function_A(): print("AAA") if __name__=="__main__": print("using program A") function_A() |
如此修改,就可以避免呼叫時重複執行的情形發生。
留言