這篇文章主要講解了“Python中py文件里的name == 'main'有什么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python中py文件里的name == 'main'有什么用”吧!
在查看 Python 代碼的時候,我們經常在代碼中看見這樣一句if __name__ == "__main__":
,到底是干啥的呢?不寫行不行?寫了有什么好處?
默認情況下,Python 代碼是從上到下,一行一行被解釋器執行的。當然,定義一個函數,沒有調用時,內部代碼是執行不到的。之后,我們執行任意一個 Python 文件,會從上往下執行你寫好的每一個函數,就是 print,a(), x.y()等等.
if __name__ == "__main__":
這句代碼,最關鍵的是這個地方:__name__
到底等于啥?
雙下劃線包裹的變量,一般為 Python 內置變量,也是個全局變量,Python 內部會自己處理。我們這里用兩個等于判斷是否等于雙下劃線的 main,其實就能猜到這個 name 是有時候等于 有時候不等于 main 的(DE8UG 注:雙下劃線不好寫,我這幾個單詞地方省略咯)。
什么時候等于呢?Python 規定的是,當調用當前 Python 腳本的時候。比如有個 a.py, 當用python a.py
調用的時候,name 就會賦值為 main,這時候 if 判斷成立,也就執行這以后的代碼了。其他沒被直接調用的模塊,也就等于那個模塊自己的名字,其實就是那個 py 文件的名字。
綜上,我是建議大家每一個 python 文件里都寫上這一段的。把當前 py 文件里面,需要測試的代碼,以及我們想直接執行的代碼,都寫到這句判斷的后面。這樣,既可以直接測試這個文件的代碼,而且其他地方調用這個文件的時候,也不會錯誤的執行不需要的代碼了。
舉個例子:
# a.py
print('a.py')
print('a模塊名稱:', __name__)
# b.py
print('b.py')
print(__name__)
print('導入a')
import a
print('導入a結束')
if __name__ == "__main__":
print('運行這個python文件,才會顯示')
我們分別執行兩個文件,查看效果:
? python a.py
a.py
a模塊名稱:__main__
? python b.py
b.py
__main__
導入a
a.py
a模塊名稱:a
導入a結束
運行這個python文件,才會顯示
小作業:把 a 里面也加上那一句 if 的判斷,寫一些代碼,然后查看兩個文件的執行結果。
感謝各位的閱讀,以上就是“Python中py文件里的name == 'main'有什么用”的內容了,經過本文的學習后,相信大家對Python中py文件里的name == 'main'有什么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。