欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

聊聊Python代碼中if?__name__?==?‘__main__‘的作用是什么

 更新時(shí)間:2022年03月16日 16:38:38   作者:昊虹圖像算法  
一個(gè)python文件通常有兩種使用方法,第一是作為腳本直接執(zhí)行,第二是 import 到其他的python腳本中被調(diào)用執(zhí)行,這篇文章主要給大家介紹了關(guān)于Python代碼中if?__name__?==?‘__main__‘的作用是什么的相關(guān)資料,需要的朋友可以參考下

Python中if __name__ == ‘__main__‘作用

要搞清楚這個(gè)問題,要知道以py作為后綴的Python代碼文件,有兩種使用方式,第一種方式是直接運(yùn)行,另一種方式是作為模塊被別的py文件導(dǎo)入。

當(dāng)采用第一種方式直接運(yùn)行自身時(shí),__name__的值為__main__;

當(dāng)采用第二種方式被別的模塊導(dǎo)入時(shí),其__name__的值為其文件名(通常也稱為模塊名);

舉例實(shí)測如下:

用PyCharm新建一個(gè)Python工程后,新建兩個(gè)py文件,文件名分別為AAA.py和BBB.py

然后在AAA.py中寫上如下代碼:

print('當(dāng)前AAA.py中__name__的值為:', __name__)

在BBB.py中寫上如下代碼:

import AAA

然后分別運(yùn)行這兩個(gè)Python文件,結(jié)果如下:

運(yùn)行AAA.py的結(jié)果如下:

運(yùn)行BBB.py的結(jié)果如下:

這個(gè)示例除了應(yīng)證了上面說的py文件的兩種使用方式,還表明使用import導(dǎo)入py文件/模塊時(shí),這個(gè)被導(dǎo)入的py文件中沒有縮進(jìn)的代碼會被全部執(zhí)行一遍。

這樣就帶來了一個(gè)問題,如果我在導(dǎo)入模塊AAA.py時(shí)如果有想代碼不想被執(zhí)行,那么該怎么做呢?語句“if __name__ == ‘__main__’”就能實(shí)現(xiàn)這個(gè)作用,具體怎么用,有朋友看了上面的例子應(yīng)該已經(jīng)明白了,如果還不明白,請看下面這個(gè)例子:

修改上面的AAA.py的代碼為如下代碼:

print('\n')
print('當(dāng)前AAA.py中__name__的值為“{}”'.format(__name__))
if __name__ == '__main__':
    print('\n')
    print('當(dāng)前運(yùn)行的文件是AAA.py')
else:
    print('\n')
print('當(dāng)前AAA.py是作為模塊被其它py文件導(dǎo)入')

再次分別運(yùn)行AAA.py和BBB.py,結(jié)果分別如下:

請?zhí)砑訄D片描述

請?zhí)砑訄D片描述

可見通過語句“if __name__ == ‘__main__’,就能判斷出一個(gè)py文件是直接運(yùn)行還是作為模塊文件被別的py文件導(dǎo)入的,進(jìn)而通過這個(gè)判斷實(shí)現(xiàn)一些代碼的不被執(zhí)行。

那么通常來說哪些代碼不希望被執(zhí)行呢?當(dāng)文件被作者定義為一個(gè)模塊時(shí),里面難免含有一些測試代碼,當(dāng)模塊被import時(shí),這些代碼是不希望被執(zhí)行的。

補(bǔ)充:if __name__ == '__main__':的運(yùn)行原理

每個(gè)python模塊(python文件,也就是此處的 test.py 和 import_test.py)都包含內(nèi)置的變量 __name__,當(dāng)該模塊被直接執(zhí)行的時(shí)候,__name__ 等于文件名(包含后綴 .py );如果該模塊 import 到其他模塊中,則該模塊的 __name__ 等于模塊名稱(不包含后綴.py)。

 “__main__” 始終指當(dāng)前執(zhí)行模塊的名稱(包含后綴.py)。進(jìn)而當(dāng)模塊被直接執(zhí)行時(shí),__name__ == 'main' 結(jié)果為真。

為了進(jìn)一步說明,我們在 test.py 腳本的 if __name__=="__main__": 之前加入 print(__name__),即將 __name__ 打印出來。文件內(nèi)容和結(jié)果如下:

可以看出,此時(shí)變量__name__的值為"__main__"。

再執(zhí)行 import_test.py,執(zhí)行結(jié)果如下:

此時(shí),test.py中的__name__變量值為 test,不滿足 __name__=="__main__" 的條件,因此,無法執(zhí)行其后的代碼。

總結(jié)

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

相關(guān)文章

  • Python計(jì)算斗牛游戲概率算法實(shí)例分析

    Python計(jì)算斗牛游戲概率算法實(shí)例分析

    這篇文章主要介紹了Python計(jì)算斗牛游戲概率算法,簡單介紹了斗牛游戲的原理并結(jié)合具體實(shí)例形式分析了相關(guān)的游戲概率算法,需要的朋友可以參考下
    2017-09-09
  • python openpyxl打開文件關(guān)閉問題

    python openpyxl打開文件關(guān)閉問題

    這篇文章主要介紹了python openpyxl打開文件關(guān)閉問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python 自制簡單版《我的世界》的詳細(xì)過程

    Python 自制簡單版《我的世界》的詳細(xì)過程

    這篇文章主要介紹了教你用 Python 自制簡單版《我的世界》,接下來,我們就帶你運(yùn)行這個(gè)項(xiàng)目,并對這個(gè)開源的小游戲做一下簡單的更改,讓它變成“你的”世界
    2021-11-11
  • Python使用cx_Oracle模塊將oracle中數(shù)據(jù)導(dǎo)出到csv文件的方法

    Python使用cx_Oracle模塊將oracle中數(shù)據(jù)導(dǎo)出到csv文件的方法

    這篇文章主要介紹了Python使用cx_Oracle模塊將oracle中數(shù)據(jù)導(dǎo)出到csv文件的方法,涉及Python中cx_Oracle模塊與csv模塊操作Oracle數(shù)據(jù)庫及csv文件的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python爬蟲框架Scrapy簡介

    Python爬蟲框架Scrapy簡介

    這篇文章介紹了Python爬蟲框架Scrapy,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python開發(fā)加薪利器之Docker的使用實(shí)踐

    Python開發(fā)加薪利器之Docker的使用實(shí)踐

    docker利用容器技術(shù),獨(dú)立運(yùn)行一個(gè)或者一組應(yīng)用,docker是基于go語言開發(fā),docker鏡像好比是一個(gè)模版,可以通過這個(gè)模版來創(chuàng)建容器服務(wù),今天通過本文給大家分享Docker的使用實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • python 劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測試集的方法

    python 劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測試集的方法

    今天小編就為大家分享一篇python 劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測試集的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python 類屬性與實(shí)例屬性,類對象與實(shí)例對象用法分析

    Python 類屬性與實(shí)例屬性,類對象與實(shí)例對象用法分析

    這篇文章主要介紹了Python 類屬性與實(shí)例屬性,類對象與實(shí)例對象用法,結(jié)合實(shí)例形式分析了java類相關(guān)的屬性、實(shí)例化、對象等相關(guān)概念與操作技巧,需要的朋友可以參考下
    2019-09-09
  • python 將list轉(zhuǎn)成字符串,中間用符號分隔的方法

    python 將list轉(zhuǎn)成字符串,中間用符號分隔的方法

    今天小編就為大家分享一篇python 將list轉(zhuǎn)成字符串,中間用符號分隔的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python動(dòng)態(tài)強(qiáng)類型解釋型語言原理解析

    Python動(dòng)態(tài)強(qiáng)類型解釋型語言原理解析

    這篇文章主要介紹了Python動(dòng)態(tài)強(qiáng)類型解釋型語言原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評論