在python程式碼有時會看到if __name__ == '__main__': 的判斷式,其用途是判斷目前所執行的python檔案是以主程式或以模組的方式執行。
先建立一名為mod1.py的檔案
def module_name_show():
print('mod1.py 的__name__名稱為:', __name__)
if __name__ == '__main__':
print('mod1.py 以主程式方式執行')
module_name_show()
else:
print('mod1.py 以模組方式執行')
程式執行結果:
說明:
1. 當直接執行程式時,列印出"mod1.py 以主程式方式執行",故得知其__name__的名稱為__main__才會執行if條件成立的敘述。
2. 然後再呼叫函式module_name_show()列印__name__名稱。
接下來再建立一名為mod1_main.py的檔案。
import mod1
if __name__ == '__main__':
print('mod1_main.py的__name__名稱為:',__name__)
mod1.module_name_show()
執行該mod1_main.py程式,結果如下:
由執行結果可得知:
1. import模組時,會先執行模組內的if判斷敘述。而所列印的結果得知,是else區段,故可知其__name__名稱不是__main__。
2. 當import完後,才會執行主程式的if判斷敘述。列印出所執行程式的__name__名稱。列印出來為__main__。
3. 接下來再呼叫mod1模組內的module_name_show()函式。而此時其函式所列印的__name1__名稱為mod1,也就是模組(檔名)名稱。
結論,由以上程式的示範可得知:
1. 當直接執行該檔案時,其__name__名稱為:__main__。
2. 當該檔案被另一個檔案當模組import時,其__name__名稱為該模組(檔名)名稱。
沒有留言:
張貼留言