從學到python以來,常常看到很多函式(function)中出現以下的語句

if __name__ == '__main__':

雖然一直知道他是用來做甚麼的,但是卻不太能理解他的作動原理

舉個例子,我們創建一個test.py然後寫入以下程式:

print('我愛Python')

def love():
    print('我愛Python')
if __name__ == '__main__':
    love()

    print('天天寫扣的,越來越愛python')


然後執行程式


我們可以看到輸出結果如下





然後,在同一層的資料夾新建名稱為import_test.py的檔案,只輸入以下程式:
import test

最後我們打開anaconda Prompt來比較兩者的差異



兩者相比較,import_test.py,只有輸出我愛Python,也就是if __name__=="__main__": 之前的語句被執行,之後的沒有被執行。

這是為甚麼呢?

我們來用用萬用的print

我們在test.py檔案的if __name__=="__main__":之前加入print __name__,即將__name__列印出來









則最後執行結果如下:



可以看出,此時變數__name__的值為"__main__"

再執行import_test.py





此時,import_test.py中的__name__變數為test,不滿足__name__=="__main__"的條件,因此無法執行後面的程式。


簡而言之就是:__name__ 是當前檔案名,當檔案被直接運行時檔案名為__main__ 。

當檔案被直接運行時,程式將被運行,當檔案是被導入進來時,程式不被運行。