淺析Python __name__ 是什么
前言
在我們?yōu)g覽一下 python 文件或者自己寫 python 代碼的時候,時常會在代碼的最后加上這樣的一行代碼
if __name__ == '__main__': func_name()
那么這一行代碼有什么具體的作用呢,不加的話會對我們的結(jié)果造成影響嗎?
__name__
首先對于用雙下劃線開頭且結(jié)尾的變量,在 Python 中被稱為內(nèi)置變量,除了 __name__
,我們常見的還有 __init__
,__dict__
等等.那么有多少內(nèi)置變量呢?我們可以通過下面在交互界面輸入下面的命令,查看 Python 全部內(nèi)置變量和內(nèi)置函數(shù)
>>> dir(__builtins__)
結(jié)果如下圖:
不同情況下的 __name__
的值
首先我們需要知道 __name__
在不同情況下會有不同值,它的值取決于我們是如何執(zhí)行腳本的.我們可以通過幾個例子感受一下:
Example 0
# test.py print(f'__name__ 在 test.py 值為 {__name__}')
然后直接執(zhí)行一下代碼
$ python test.py
然后看一下輸出
$ python test.py __name__ 在 test.py 值為 __main__
在這個例子中,我們發(fā)現(xiàn) __name__
的值是 __main__
Example 1
在這個例子中,我們重新創(chuàng)建一個腳本 test1.py 然后我們在 test1.py 中調(diào)用 test.py
# test1.py import test print(f'__name__ 在 test1.py 值為 {__name__}')
接著執(zhí)行一下 test1.py,再看一下輸出
python test1.py __name__ 在 test.py 值為 test __name__ 在 test1.py 值為 __main__
結(jié)果是不是很有意思?整個過程是什么樣子的呢?簡單的畫了一個圖
什么時候使用 __name__
有時候,我們用 Python 寫了一個腳本,當(dāng)我們既希望這個腳本可以單獨運行,同樣希望它可以在其他的腳本中發(fā)揮作用. 這個時候就需要考慮使用 __name__
了. 這里通過改造上面 Example 1的例子來直觀感受一下
修改一下 test.py 文件
# test.py def hello(name): print(f'Hello,{name}') if __name__ == '__main__': hello("test")
再修改一下 test1.py 文件
# test1.py from test import hello hello("test1")
然后讓我們先嘗試直接運行一下 test.py
,很顯然這個時候, if 語句條件滿足,會輸出 Hello,test
$ python test.py Hello,test
這個時候我們?nèi)绻\行 test1.py
,程序就會輸出 Hello,test1 了
$ python test1.py Hello,test1
如果我們把 if __name__ == "__main__"
在 test.py
去掉會發(fā)生什么呢?
$ python test1.py Hello,test Hello,test1
參考
What does if name == “main”: do?
到此這篇關(guān)于Python __name__ 是什么的文章就介紹到這了,更多相關(guān)Python __name__ 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+Pyecharts實現(xiàn)散點圖的繪制
散點圖是指在回歸分析中,數(shù)據(jù)點在直角坐標(biāo)系平面上的分布圖,散點圖表示因變量隨自變量而變化的大致趨勢,據(jù)此可以選擇合適的函數(shù)對數(shù)據(jù)點進(jìn)行擬合。本文將利用Python Pyecharts實現(xiàn)散點圖的繪制,需要的可以參考一下2022-06-06Python根據(jù)URL地址下載文件并保存至對應(yīng)目錄的實現(xiàn)
這篇文章主要介紹了Python根據(jù)URL地址下載文件并保存至對應(yīng)目錄的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python中執(zhí)行存儲過程及獲取存儲過程返回值的方法
這篇文章主要介紹了Python中執(zhí)行存儲過程及獲取存儲過程返回值的方法,結(jié)合實例形式總結(jié)分析了Python調(diào)用存儲過程的常用方法與相關(guān)操作注意事項,需要的朋友可以參考下2017-10-10淺談Python 命令行參數(shù)argparse寫入圖片路徑操作
這篇文章主要介紹了淺談Python 命令行參數(shù)argparse寫入圖片路徑操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07