if __name__ == 'main': 的作用和原理
if __name__ == ‘main‘:
功能
一個python的文件有兩種使用的方法,第一是直接作為腳本執行,第二是import到其他的python腳本中被調用(模塊重用)執行。
if __name__ == ‘main‘: 的作用:
就是控制這兩種情況執行代碼的過程,在“if __name__ == ‘main‘: ”下的代碼只有在第一種情況下(即文件作為腳本直接執行)才會被執行,而import到其他腳本中是不會被執行的。
原理
每個python模塊(python文件,也就是*.py)都包含內置的變量__name__。
1. 當運行模塊(A.py)作為腳本自己去運行的話,對應的模塊名始終叫做__main__,即模塊A.py文件本身,而__name__等於模塊名稱,也就等於__main__;
2. 如果模塊(A.py)import到其他模塊(B.py)中,對應的模塊名叫做A,則__name__等於模塊名稱A。
所以,當模塊被直接執行時,__name__ == ‘__main__‘結果為真;當模塊被import到其他的python腳本中被調用執行,不滿足__name__=="__main__"的條件,因此,無法執行其後的代碼。
test.py
print("I‘m the first.") print(__name__) if __name__=="__main__": print("I‘m the second.")
python test.py的結果:
I‘m the first.__main__ I‘m the second.
import_test.py
import test
python import_test.py的結果:
I‘m the first. test
此時,test.py中的__name__變量值為test,不滿足__name__=="__main__"的條件,因此,無法執行其後的代碼。
__name__
如果是放在Modules模塊中,就表示是模塊的名字;
如果是放在Classs類中,就表示類的名字
__main__
模塊第一次被導出(import)後,系統會自動為其創建一個域名空間(namespace);(模塊,都是有自己的名字的)此處的腳本的主模塊的名字,始終都叫做__main__。
【參考文檔】
python編程中的if __name__ == ‘main‘: 的作用和原理:http://www.dengfeilong.com/post/60.html
Python中的__name__和__main__含義詳解:https://blog.csdn.net/jjwen/article/details/53084882
Python中的__name__和__main__含義詳解: https://www.crifan.com/python_detailed_explain_about___name___and___main__/comment-page-1/
if __name__ == 'main': 的作用和原理