編輯嚴選
為甚麼很多程式碼都有if __name__ == '__main__': ?

2021/09/07閱讀時間約 1 分鐘
前言
今天的前言一樣是可以跳過的,坐下來寫文章的原因是因為正在coding中,但有個地方錯誤怎麼都找不出問題,只好沉靜下來放鬆心思,寫一個簡單的程式概念,也算是利用發散模式解決問題,發散模式是我最近正在閱讀”學習如何學習”中提到的,也許有時間也可以說說我如何實踐該本書的學習方式。
正文開始囉
一個檔案通常有兩種操作,一個是被執行,另一種則是被引用。
在python引用一個檔案,有一件事值得注意:該檔案被引用時,檔案內的每一行都會被python直譯器讀取並執行。假如我在B檔案寫一個function,而我在A檔案要使用該function於是引用B檔案,並且執行A檔案,依照前面的邏輯,那不就等於這個B檔案function會被執行兩次!?下面會說明我們如何防止B被執行兩次,這就是為甚麼常看見if __name__ == '__main__': ?
Python 直譯器執行程式碼時,有一些隱藏的變數,模組名稱__name__就是其中一個,在不同情況,這個隱藏變數__name__會有所不同。
  1. 當檔案是被直接執行:__name__ = __main__。
  2. 當檔案是被引用執行:__name__ = 檔名。
用上述來寫一個範例,有AB兩個python檔如下。
當我沒有利用if __name__ == '__main__':,而執行A檔案,結果如下圖,可以看到A檔案__name__ = __main__,B檔案的function被執行兩次,且__name__ = 檔名。
如果我們將B檔案改寫一下利用if __name__ == '__main__': ,再重新執行一次程式,結果如下,B檔案就不會因為被引用而多執行一次在B檔案就有用到的function。
為什麼會看到廣告
薰魚
薰魚
留言0
查看全部
發表第一個留言支持創作者!