分類

展開全部 | 收合全部

分類

展開全部 | 收合全部

【Python 進階語法 #9】python __name__ == “__main__” 筆記,內附常考問題

前言

因為雙底線會被 markdown 文字吃掉,以下文章「雙底線、雙等號」請自行補上。

這篇屬於 python 要準備進行更複雜實作的時候才會碰到的狀況,
通常一個簡單的 python 腳本不會需要用到 name = main 這個敘述,
我們可以直接撰寫並執行。

這邊只寫到我要用到的地方,觀念可能不是很清楚,有錯歡迎指正。

說明

不論是 name 或是 main,
用雙引號的表示方式,在 python 中都是屬於一種特殊標誌,

思考問題 (重要)

如果我們透過 import 另外一支 python 程式,
那請問那個被 import 的 python 程式,
內容會不會直接被執行呢?

  • 範例:請回答下面的 python 程式,在執行 main.py 後,會輸出什麼內容?
# main.py
import import_module
print("This is main")
# import_module.py
print("This is import module")

思考問題解答

這邊強烈建議自己想一次、並寫一次!!!!
會特別有感覺,而且會更有印象

答案是:

想一下,應該滿合理的對吧!
其實不一定哦!!!

思考 – 我們才剛使用別人的 module? 怎麼還沒做事就直接印東西了呢?

當然,這有可能是寫法的關係,
不過你想想,如果今天 import XXXX 時,
我根本還沒想對他作什麼事情,他就先印一個東西給我,
這樣其實很詭異欸!!! 還可能不知道誰在搞鬼

不過一般來說不會這樣用啦,只是要知道這訊息可能從哪來的

一般來說我們都會定義一些 function,也因為這個特性,
這時就直接載入,就會是正常的行為。

另外一個範例

我們稍微修改一下第二支程式,問題來了,我們執行一樣的 main.py,
這次會印什麼呢?

# import_module.py

if __name__ == "__main__":
    print("This is import module")

這段程式基本上沒啥用…也不會有人這樣寫
但我不知道為什麼考試好像會考…
位於 import 的程式,main 是沒有作用的,
重點只要知道「main」就是作為程式的開始點,在執行的當下會被呼叫一個而已。

常用範例程式碼

雖然上面講了那麼多觀念,實際上我們使用大概是這樣:

def main():
    pass

if __name__ == "__main__":
    main()

Reference

Howard Weng
Howard Weng

我是 Howard Weng,很多人叫我嗡嗡。這個網站放了我的各種筆記。希望這些筆記也能順便幫助到有需要的人們!如果文章有幫助到你的話,歡迎幫我點讚哦!
另外,因為定位是「個人的隨手筆記」,有些文章內容「⚠️可能我理解有誤⚠️」或「?只寫到一半?」,如果有發現這樣的情況,歡迎在該文章的最下面留言提醒我!我會儘快修正或補上!感謝大家的建議與幫忙,讓網站能變得更好?

文章: 883

★留個言吧!內容有誤或想要補充也歡迎與我討論!