我們知道:
一個Python文件有兩種使用方法, 第一是直接作為腳本執行,第二是通過在其它py文件中導入該文件調用執行。
而if __name__ == '__main__'的作用就是控制這兩種情況的代碼執行過程。
簡言之:if __name == '__main__'下的代碼只有在被作為腳本執行的情況下才會執行
舉個例子:
新建test_01.py文件:
print('Run is good sport!') print(__name__) if __name__ == '__main__': print('我被當作腳本執行了') # 執行test_01.py結果: Run is good sport! __main__ 我被當作腳本執行了
新建test_02.py文件:
from name_main import test_01 print(__name__) # 執行test_02.py結果: Run is good sport! name_main.test_01 __main__
分析:
第一次執行test_01.py文件:
test_01.py當作腳本執行,則腳本中的__name__就是'__main__',所以會依次執行
print('Run is good sport!')
print(__name__)
print('我被當作腳本執行了')
第二次執行test_02.py文件:
首先導入test_01.py文件,py文件在導入的時候會執行導入文件的代碼所以
print('Run is good sport!')
print(__name__)
然后由於test_01.py文件是作為模塊導入的,所以此時__name__就不會是'__main__'(而是導入的文件名name_main.test_01),所以if __name__ == '__main__'條件不成立
然后繼續執行
print(__name__),此時的__name__由於是test_02.py當作腳本執行,所以就是'__main__'
最后總結:
if __name__ == '__main__'的主要用處就是模塊當作腳本執行時的部分代碼私有化,也就是只有當作腳本執行的時候if __name__ == '__main__'下的代碼才會執行。
