在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 以模組方式執行')
程式執行結果:
說明:
當直接執行程式時,列印出"mod1.py 以主程式方式執行",故得知其__name__的名稱為__main__才會執行if條件成立的敘述。
然後再呼叫函式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程式,結果如下:
由執行結果可得知:
import模組時,會先執行模組內的if判斷敘述。而所列印的結果得知,是else區段,故可知其__name__名稱不是__main__。
當import完後,才會執行主程式的if判斷敘述。列印出所執行程式的__name__名稱。列印出來為__main__。
接下來再呼叫mod1模組內的module_name_show()函式。而此時其函式所列印的__name__名稱為mod1,也就是模組(檔名)名稱。
結論,由以上程式的示範可得知:
這是回覆你貼文看不到 main 前後兩個底線字元的問題。這是因為採用 markdown 語法, 用一對底線字元夾內容, 像是這樣 _斜體_ 是 斜體 的意思, 如果要顯示底線字元, 要在底線字元前面加上斜線取消底線表示斜體的功能, 像是這樣 \_不會斜體\_, 就會變成 _不會斜體_, 連續兩個底線字元剛好表示一個什麼內容都沒有的斜體格式, 所以會把底線字元都用掉, 顯示時就什麼都看不到了。你要用 \_\_main\_\_ 才會顯示 __main__
謝謝您的回覆。但很奇怪的是,整篇文章只有這段出問題。其它有關底線的地方都正常。不知是何原因!?由於文章是我從自己的Blogger貼過來的,不知是否因這影響。
如果是程式碼區塊, 區塊內所有的格式都不會生效, 所以不會有問題。
但奇怪的是,文章中非程式碼區塊,只有在結論這一段的__main__出問題。其他區段的文字(非程式碼)並沒用跳脫字元來標示底線也能正常顯示。
這個可能要看你原始貼文內容才知道細節, 不然只能看到顯示的結果, 無法判斷原因。
這篇文章就不研究了。之後新post的文章就照markdown定義去撰寫。感謝您多次的回覆。