亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一篇文章徹底弄懂Python中的if?__name__?==?__main__

 更新時間:2022年12月08日 16:24:31   作者:趙卓不凡  
在Python當中如果代碼寫得規(guī)范一些,通常會寫上一句if '__name__'=='__main__:'作為程序的入口,下面這篇文章主要給大家介紹了關于如何通過一篇文章徹底弄懂Python中的if?__name__?==?__main__的相關資料,需要的朋友可以參考下

1. 引言

在Python相關代碼中,我們經(jīng)常會遇到如下代碼段:

# stuff
if __name__ == "__main__":
    # do stuff

本文將盡可能使用簡單的樣例來解釋這里發(fā)生了什么,以及需要使用if __name__=="__main__"的情形。請注意,上述代碼中namemain前后有2個下劃線字符。

閑話少說,我們直接開始吧!

2. 特殊變量

當我們正常運行我們的Python腳本時,該腳本中的變量__name__的值一般為__main__。我們來看個示例:

# first.py
print(__name__)

我們在終端中運行上述腳本,代碼如下:

python first.py  

輸出如下:

__main__

觀察上述輸出,當我們運行腳本first.py的時候,變量__name__的值被設置為__main__

3. 復雜的例子

上述示例相對簡單,也相對容易理解。接著我們來舉個具有多個文件的例子,這里假設我們有三個腳本,分別為a.py,b.py以及c.py。

其中,a.py的內容如下:

# a.py
print("__name__ in a.py:", __name__)
from b import *
from c import *

此時,b.py的內容如下:

# b.py
print("__name__ in b.py:", __name__)

c.py的內容如下:

# c.py
print("__name__ in c.py:", __name__)

如果我們運行命令python a.py得到結果如下:

__name__ in a.py: __main__
__name__ in b.py: b
__name__ in c.py: c

注意在腳本a.py中我們看到__name__的值為__main__,此時在腳本b.py__name__的值為b, 同時 c.py__name__的值為c。這是因為我們運行的腳本為a.py,那么該腳本即a.py中變量__name__的值將會被設置為字符串__main__.

此外,腳本b.pyc.py中的變量·__name__分別保持為bc,這是因為腳本b.pyc.py不是直接運行的腳本。而是我們運行的腳本a.py調用了b.pyc.py中的print函數(shù)。

如果我們單獨運行python b.py得到結果如下:

__name__ in b.py: __main__

相應的我們運行python c.py,得到結果如下:

__name__ in c.py: __main__

觀察上述兩個輸出,當我們直接運行腳本b.pyc.py,相應的腳本里的變量__name__都將被設置為__main__。

4. 使用場景

作為Python開發(fā)者,我們通常會在一個項目工程中創(chuàng)建多個Python文件而不是將所有代碼都寫在一個Python文件中。因此我們通常會有一個主的Python文件用來作為項目工程的入口,同時其他文件包含一些輔助性的函數(shù)實現(xiàn)。

我們來看個示例,這里假設我們有兩個Python文件,如下:

# main.py
from helper import *
print(greet("bob"))

輔助函數(shù)實現(xiàn) helper.py內容如下:

# helper.py
def greet(name):
    return "hello " + name
print(greet("testname"))

如果此時我們運行命令 python main.py,得到結果如下:

hello bob
hello testname

主要上述的import語句將從helper.py中引入所有的語句,所以helper.py中的測試語句print(greet("testname"))也將被執(zhí)行。雖然我們可以通過添加注釋或者屏蔽注釋來達到運行main.pyhelper.py來控制該測試語句的輸出,但是這種情形就是語句
if __name__=="__main__" 大顯身手的情形。

5. 解決方案

我們針對上述情形,進行代碼整改,如下:

# main.py
from helper import *
print(greet("bob"))

我們修改文件 helper.py內容如下:

def greet(name):
    return "hello " + name
if __name__ == "__main__":
    print(greet("testname"))

此時,我們執(zhí)行命令python main.py,得到結果如下:

hello bob

注意,此時helper.py 中的變量 __name__的值為helper, 所以helper.py中的if語句不成立,進而將不會執(zhí)行我們的測試語句print(greet("testname")).

此時,如果我們單獨運行命令python helper.py ,得到結果如下:

hello testname

單獨運行helper.py時,此時改腳本中的變量__name__將被設置為__main__,所以此時的測試語句將會被執(zhí)行,輸出相應的測試結果。

6. 總結

本文重點介紹了Python中常見的if __name__=="__main__" ,重點分析了其背后的原理和應用的場景。

到此這篇關于Python中if __name__ == __main__的文章就介紹到這了,更多相關Python中if __name__ == __main__內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • pandas 選擇某幾列的方法

    pandas 選擇某幾列的方法

    今天小編就為大家分享一篇pandas 選擇某幾列的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • pandas.dataframe中根據(jù)條件獲取元素所在的位置方法(索引)

    pandas.dataframe中根據(jù)條件獲取元素所在的位置方法(索引)

    今天小編就為大家分享一篇pandas.dataframe中根據(jù)條件獲取元素所在的位置方法(索引),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python初學者,用python實現(xiàn)基本的學生管理系統(tǒng)(python3)代碼實例

    python初學者,用python實現(xiàn)基本的學生管理系統(tǒng)(python3)代碼實例

    這篇文章主要介紹了用python實現(xiàn)學生管理系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Pycharm中Python環(huán)境配置常見問題解析

    Pycharm中Python環(huán)境配置常見問題解析

    這篇文章主要介紹了Pycharm中Python環(huán)境配置常見問題,結合圖文形式分析了Pycharm中Python環(huán)境配置模塊路徑問題、虛擬環(huán)境創(chuàng)建、配置遠程服務器、連接數(shù)據(jù)庫等常見問題與操作方法,需要的朋友可以參考下
    2020-01-01
  • Python?flask使用ajax上傳文件的示例代碼

    Python?flask使用ajax上傳文件的示例代碼

    這篇文章主要介紹了Python?flask使用ajax上傳文件,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • python如何查看微信消息撤回

    python如何查看微信消息撤回

    這篇文章主要為大家詳細介紹了python實現(xiàn)查看微信消息撤回的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python復制文件的方法實例詳解

    python復制文件的方法實例詳解

    這篇文章主要介紹了python復制文件的方法,以實例形式較為詳細的分析了Python文件復制的相關操作模塊與使用技巧,需要的朋友可以參考下
    2015-05-05
  • Django權限系統(tǒng)auth模塊用法解讀

    Django權限系統(tǒng)auth模塊用法解讀

    這篇文章主要介紹了Django權限系統(tǒng)auth模塊用法解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Pandas 同元素多列去重的實例

    Pandas 同元素多列去重的實例

    今天小編就為大家分享一篇Pandas 同元素多列去重的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python入門學習指南分享

    Python入門學習指南分享

    這篇文章主要為大家詳細介紹了Python入門的學習指南,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04

最新評論