淺析python 中__name__ = '__main__' 的作用
很多新手剛開始學習python的時候經(jīng)常會看到python 中__name__ = \'__main__\' 這樣的代碼,可能很多新手一開始學習的時候都比較疑惑,python 中__name__ = '__main__' 的作用,到底干嘛的?
有句話經(jīng)典的概括了這段代碼的意義:
“Make a script both importable and executable”
意思就是說讓你寫的腳本模塊既可以導入到別的模塊中用,另外該模塊自己也可執(zhí)行。
這句話,可能一開始聽的還不是很懂。下面舉例說明:
先寫一個模塊:
#module.py def main(): print "we are in %s"%__name__ if __name__ == '__main__': main()
這個函數(shù)定義了一個main函數(shù),我們執(zhí)行一下該py文件發(fā)現(xiàn)結果是打印出”we are in __main__“,說明我們的if語句中的內(nèi)容被執(zhí)行了,調(diào)用了main():
但是如果我們從另我一個模塊導入該模塊,并調(diào)用一次main()函數(shù)會是怎樣的結果呢?
#anothermodle.py from module import main main()
其執(zhí)行的結果是:we are in module
但是沒有顯示”we are in __main__“,也就是說模塊__name__ = '__main__' 下面的函數(shù)沒有執(zhí)行。
這樣既可以讓“模塊”文件運行,也可以被其他模塊引入,而且不會執(zhí)行函數(shù)2次。這才是關鍵。
總結一下:
如果我們是直接執(zhí)行某個.py文件的時候,該文件中那么”__name__ == '__main__'“是True,但是我們?nèi)绻麖牧硗庖粋€.py文件通過import導入該文件的時候,這時__name__的值就是我們這個py文件的名字而不是__main__。
這個功能還有一個用處:調(diào)試代碼的時候,在”if __name__ == '__main__'“中加入一些我們的調(diào)試代碼,我們可以讓外部模塊調(diào)用的時候不執(zhí)行我們的調(diào)試代碼,但是如果我們想排查問題的時候,直接執(zhí)行該模塊文件,調(diào)試代碼能夠正常運行!
相關文章
對python3 Serial 串口助手的接收讀取數(shù)據(jù)方法詳解
今天小編就為大家分享一篇對python3 Serial 串口助手的接收讀取數(shù)據(jù)方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06Appium+Python+pytest自動化測試框架的實戰(zhàn)
本文主要介紹了Appium+Python+pytest自動化測試框架的實戰(zhàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12PyCharm-錯誤-找不到指定文件python.exe的解決方法
今天小編就為大家分享一篇PyCharm-錯誤-找不到指定文件python.exe的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python操作Sonqube API獲取檢測結果并打印過程解析
這篇文章主要介紹了Python操作Sonqube API獲取檢測結果并打印過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11python 動態(tài)遷移solr數(shù)據(jù)過程解析
這篇文章主要介紹了python 動態(tài)遷移solr數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09Python中xlsx文件轉(zhuǎn)置操作詳解(行轉(zhuǎn)列和列轉(zhuǎn)行)
很多時候我們處理的Excel表格并不是我們想要的樣子,需要將表格的形式進行相應轉(zhuǎn)換后進行數(shù)據(jù)分析操作,下面這篇文章主要給大家介紹了關于Python中xlsx文件轉(zhuǎn)置操作(行轉(zhuǎn)列和列轉(zhuǎn)行)的相關資料,需要的朋友可以參考下2022-07-07Python圖像處理之gif動態(tài)圖的解析與合成操作詳解
這篇文章主要介紹了Python圖像處理之gif動態(tài)圖的解析與合成操作,結合實例形式分析了Python基于PIL模塊解析gif文件,以及基于imageio庫合成gif文件的相關操作技巧,需要的朋友可以參考下2018-12-12解決Keras的自定義lambda層去reshape張量時model保存出錯問題
這篇文章主要介紹了解決Keras的自定義lambda層去reshape張量時model保存出錯問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python自動化實戰(zhàn)之接口請求的實現(xiàn)
本文為大家重點介紹如何通過 python 編碼來實現(xiàn)我們的接口測試以及通過Pycharm的實際應用編寫一個簡單接口測試,感興趣的可以了解一下2022-05-05Python疫情確診折線圖實現(xiàn)數(shù)據(jù)可視化實例詳解
數(shù)據(jù)可視化是指用圖形或表格的方式來呈現(xiàn)數(shù)據(jù)。圖表能夠清楚地呈現(xiàn)數(shù)據(jù)性質(zhì),?以及數(shù)據(jù)間或?qū)傩蚤g的關系,可以輕易地讓人看圖釋義。用戶通過探索圖(Exploratory?Graph)可以了解數(shù)據(jù)的特性、尋找數(shù)據(jù)的趨勢、降低數(shù)據(jù)的理解門檻2022-09-09