10.14 你常常在寫的 if

你在寫 Python 代碼的時候

經常會寫到這麼一句

if __name__ == '__main__'

市面上很多 Python 相關的教程

都是在這裡一筆帶過

你常常在寫的 if __name__ == '__main__' 到底是個啥?

有些比較好奇的 b 友

想知道為啥要這樣寫

剛好有人問起

小帥b今天就來告訴你為啥

那麼接下來就是

學習 Python 的正確姿勢

你常常在寫的 if __name__ == '__main__' 到底是個啥?

當你在寫 .py 的時候

一般是以兩種方式存在的

1、作為腳本直接運行了

你常常在寫的 if __name__ == '__main__' 到底是個啥?

2、作為模塊給別人導入

你常常在寫的 if __name__ == '__main__' 到底是個啥?

你的代碼在被執行的時候

Python 解釋器會先去

讀取你的 Python 代碼

然後定義一些全局的內置變量

而我們常常寫的這個 __name__

就是其中的變量之一

有些人會這樣判斷

__name__ 的值是 __main__

就說明這裡是程序入口

你常常在寫的 if __name__ == '__main__' 到底是個啥?

不過這裡的運行結果是

你常常在寫的 if __name__ == '__main__' 到底是個啥?

這裡按順序運行

先執行的是打印 name

這和 java 有點不同

沒有所謂的主函數

public static void main(String[] args){…}

那麼這個 __name__ 是來幹嘛的

if __name__ == '__main__' 去掉

不也能照樣運行

你常常在寫的 if __name__ == '__main__' 到底是個啥?

你常常在寫的 if __name__ == '__main__' 到底是個啥?

我們再定義一個方法

專門用來打印變量 name 的值

你常常在寫的 if __name__ == '__main__' 到底是個啥?

直接運行

可以看到 name 的值是 main

你常常在寫的 if __name__ == '__main__' 到底是個啥?

接著

我們把這個文件命名為 A.py

作為模塊給 B.py 導入

直接 import A

然後運行

你常常在寫的 if __name__ == '__main__' 到底是個啥?

運行

你常常在寫的 if __name__ == '__main__' 到底是個啥?

可以看到

A模塊的調用都被執行了

而且有一點很不同的是

這裡的 name 值是 A

而不是 __main__

到這裡你會發現

當 .py 直接運行的時候

__name__的值是__main__

而當 .py 被當作模塊導入的時候

__name__的值是模塊的名稱

我們接著修改一下 A.py

本來是這樣的

你常常在寫的 if __name__ == '__main__' 到底是個啥?

現在改成這樣

你常常在寫的 if __name__ == '__main__' 到底是個啥?

再運行 B.py

你常常在寫的 if __name__ == '__main__' 到底是個啥?

這次就不會運行到 A 的調用了

你常常在寫的 if __name__ == '__main__' 到底是個啥?

所以你的 .py 可以

作為自己的腳本運行

在 main 中做一些測試

或者本身程序的運行

當然你也可以

使用你的 .py 作為模塊給別人使用

給別人提供一些便利

為了不讓別人一導入你的模塊

就直接運行整個腳本

使用

if __name__ == '__main__'

ok,以上

希望對你有幫助

那麼我們下回見

peace

你常常在寫的 if __name__ == '__main__' 到底是個啥?

關注我

學習 Python 沒煩惱


分享到:


相關文章: