您好,登錄后才能下訂單哦!
本篇內容介紹了“Python代碼中if __name__ == ‘__main__‘有什么作用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
要搞清楚這個問題,要知道以py作為后綴的Python代碼文件,有兩種使用方式,第一種方式是直接運行,另一種方式是作為模塊被別的py文件導入。
當采用第一種方式直接運行自身時,__name__的值為__main__;
當采用第二種方式被別的模塊導入時,其__name__的值為其文件名(通常也稱為模塊名);
舉例實測如下:
用PyCharm新建一個Python工程后,新建兩個py文件,文件名分別為AAA.py和BBB.py
然后在AAA.py中寫上如下代碼:
print('當前AAA.py中__name__的值為:', __name__)
在BBB.py中寫上如下代碼:
import AAA
然后分別運行這兩個Python文件,結果如下:
運行AAA.py的結果如下:
運行BBB.py的結果如下:
這個示例除了應證了上面說的py文件的兩種使用方式,還表明使用import導入py文件/模塊時,這個被導入的py文件中沒有縮進的代碼會被全部執行一遍。
這樣就帶來了一個問題,如果我在導入模塊AAA.py時如果有想代碼不想被執行,那么該怎么做呢?語句“if __name__ == ‘__main__’”就能實現這個作用,具體怎么用,有朋友看了上面的例子應該已經明白了,如果還不明白,請看下面這個例子:
修改上面的AAA.py的代碼為如下代碼:
print('\n') print('當前AAA.py中__name__的值為“{}”'.format(__name__)) if __name__ == '__main__': print('\n') print('當前運行的文件是AAA.py') else: print('\n') print('當前AAA.py是作為模塊被其它py文件導入')
再次分別運行AAA.py和BBB.py,結果分別如下:
可見通過語句“if __name__ == ‘__main__’,就能判斷出一個py文件是直接運行還是作為模塊文件被別的py文件導入的,進而通過這個判斷實現一些代碼的不被執行。
那么通常來說哪些代碼不希望被執行呢?當文件被作者定義為一個模塊時,里面難免含有一些測試代碼,當模塊被import時,這些代碼是不希望被執行的。
每個python模塊(python文件,也就是此處的 test.py 和 import_test.py)都包含內置的變量 __name__,當該模塊被直接執行的時候,__name__ 等于文件名(包含后綴 .py );如果該模塊 import 到其他模塊中,則該模塊的 __name__ 等于模塊名稱(不包含后綴.py)。
而 “__main__” 始終指當前執行模塊的名稱(包含后綴.py)。進而當模塊被直接執行時,__name__ == 'main' 結果為真。
為了進一步說明,我們在 test.py 腳本的 if __name__=="__main__": 之前加入 print(__name__),即將 __name__ 打印出來。文件內容和結果如下:
可以看出,此時變量__name__的值為"__main__"。
再執行 import_test.py,執行結果如下:
此時,test.py中的__name__變量值為 test,不滿足 __name__=="__main__" 的條件,因此,無法執行其后的代碼。
“Python代碼中if __name__ == ‘__main__‘有什么作用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。