淺析Python __name__ 是什么
前言
在我們?yōu)g覽一下 python 文件或者自己寫 python 代碼的時候,時常會在代碼的最后加上這樣的一行代碼
if __name__ == '__main__': func_name()
那么這一行代碼有什么具體的作用呢,不加的話會對我們的結果造成影響嗎?
__name__
首先對于用雙下劃線開頭且結尾的變量,在 Python 中被稱為內(nèi)置變量,除了 __name__,我們常見的還有 __init__,__dict__ 等等.那么有多少內(nèi)置變量呢?我們可以通過下面在交互界面輸入下面的命令,查看 Python 全部內(nèi)置變量和內(nèi)置函數(shù)
>>> dir(__builtins__)
結果如下圖:

不同情況下的 __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__
結果是不是很有意思?整個過程是什么樣子的呢?簡單的畫了一個圖

什么時候使用 __name__
有時候,我們用 Python 寫了一個腳本,當我們既希望這個腳本可以單獨運行,同樣希望它可以在其他的腳本中發(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?
到此這篇關于Python __name__ 是什么的文章就介紹到這了,更多相關Python __name__ 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python?Panda中索引和選擇?series?的數(shù)據(jù)
這篇文章主要介紹了Python?Panda中索引和選擇series的數(shù)據(jù),文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
python網(wǎng)絡爬蟲基于selenium爬取斗魚直播信息
目前是直播行業(yè)的一個爆發(fā)期,由于國家對直播行業(yè)進行整頓和規(guī)范,現(xiàn)在整個直播行業(yè)也在穩(wěn)固發(fā)展。隨著互聯(lián)網(wǎng)和網(wǎng)絡直播市場的快速發(fā)展,相信未來還有廣闊的發(fā)展前景。今天用selenium爬取一下斗魚直播信息將代碼分享給大家2022-03-03
Python教程pandas數(shù)據(jù)分析去重復值
Pandas指定行進行去重更新值,加載數(shù)據(jù)sample抽樣函數(shù),指定需要更新的值append直接添加append函數(shù)用法,根據(jù)某一列key值進行去重key唯一2021-09-09
Python通過調(diào)用mysql存儲過程實現(xiàn)更新數(shù)據(jù)功能示例
這篇文章主要介紹了Python通過調(diào)用mysql存儲過程實現(xiàn)更新數(shù)據(jù)功能,結合實例形式分析了Python調(diào)用mysql存儲過程實現(xiàn)更新數(shù)據(jù)的具體步驟與相關操作技巧,需要的朋友可以參考下2018-04-04
Python隨機生成均勻分布在三角形內(nèi)或者任意多邊形內(nèi)的點
這篇文章主要為大家詳細介紹了Python隨機生成均勻分布在三角形內(nèi)或者任意多邊形內(nèi)的點,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Python+Pygame實現(xiàn)之走四棋兒游戲的實現(xiàn)
大家以前應該都聽說過一個游戲:叫做走四棋兒。直接在家里的水泥地上用燒完的炭火灰畫出幾條線,擺上幾顆石頭子即可。當時的火爆程度可謂是達到了一個新的高度。本文將利用Pygame實現(xiàn)這一游戲,需要的可以參考一下2022-07-07

