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__ 。
當檔案被直接運行時,程式將被運行,當檔案是被導入進來時,程式不被運行。
那導入的部分可以把__name__="__main__"嗎?
回覆刪除所以在開專案的時候name就會被寫入main了嗎?
那為什麼一定要寫 __name__ = '__main__'?
回覆刪除這算是一種安全措施~
回覆刪除