【Python】if __name__ == '__main__' 的意思

初學 Python 看別人程式碼的時候,
以為 if __name__ == '__main__':  這串敘述等同C語言 int main() 裡面的區塊。

但後來才認識到,這串 if __name__ == '__main__':  效果及用法卻截然不同。

尤其是 python 就算有這句敘述,仍然是由上而下一行行執行,
而C語言則是先執行int main()區塊。




用python寫好的一個.py檔案,只會發生以下兩種情況:



1. 自己本身執行
2. 被別的檔案執行 (被其他程式碼 import 進來)


if __name__ == '__main__'  這個區塊裡面的程式碼,
只有當情況1 自己本身執行 的時候才會運作,而被 import 時這個區塊則會被忽略。
所以可以視情況而將程式碼放進這個區塊中啦~




來 test 一下, 現在有 t1.py、t2.py 兩支程式,
兩支的程式碼相同,只不過 t1.py 在最後兩行import 了 t2.py,
接著執行 t1.py

可以發現,正執行的 t1 本身叫__main__,
t2則叫作t2





來測試另一個test,

讓 t1.py import t1 自己
import進來的t1 __name__就叫t1,而非__main__。