你在寫 Python 代碼的時候
經常會寫到這麼一句
if __name__ == '__main__'
市面上很多 Python 相關的教程
都是在這裡一筆帶過
有些比較好奇的 b 友
想知道為啥要這樣寫
剛好有人問起
小帥b今天就來告訴你為啥
那麼接下來就是
學習 Python 的正確姿勢
當你在寫 .py 的時候
一般是以兩種方式存在的
1、作為腳本直接運行了
2、作為模塊給別人導入
你的代碼在被執行的時候
Python 解釋器會先去
讀取你的 Python 代碼
然後定義一些全局的內置變量
而我們常常寫的這個 __name__
就是其中的變量之一
有些人會這樣判斷
__name__ 的值是 __main__
就說明這裡是程序入口
不過這裡的運行結果是
這裡按順序運行
先執行的是打印 name
這和 java 有點不同
沒有所謂的主函數
public static void main(String[] args){…}
那麼這個 __name__ 是來幹嘛的
把 if __name__ == '__main__' 去掉
不也能照樣運行
我們再定義一個方法
專門用來打印變量 name 的值
直接運行
可以看到 name 的值是 main
接著
我們把這個文件命名為 A.py
作為模塊給 B.py 導入
直接 import A
然後運行
運行
可以看到
A模塊的調用都被執行了
而且有一點很不同的是
這裡的 name 值是 A
而不是 __main__
到這裡你會發現
當 .py 直接運行的時候
__name__的值是__main__
而當 .py 被當作模塊導入的時候
__name__的值是模塊的名稱
我們接著修改一下 A.py
本來是這樣的
現在改成這樣
再運行 B.py
這次就不會運行到 A 的調用了
所以你的 .py 可以
作為自己的腳本運行
在 main 中做一些測試
或者本身程序的運行
當然你也可以
使用你的 .py 作為模塊給別人使用
給別人提供一些便利
為了不讓別人一導入你的模塊
就直接運行整個腳本
使用
if __name__ == '__main__'
ok,以上
希望對你有幫助
那麼我們下回見
peace
關注我
學習 Python 沒煩惱
閱讀更多 小帥b 的文章