prog_linenum

2024年3月14日 星期四

【Python】if __name__ == '__main__': 判斷式解析


在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__名稱為該模組(檔名)名稱。




沒有留言:

張貼留言

【PySide6】視窗事件_視窗本身相關事件

 本文主要是了解視窗事件被觸發的相關時機。 先給一段程式碼: """ 程式名稱:form_event.py 程式功能: 1. 視窗事件被觸發的相關時機 """ import sys from PySide6.QtGu...