python 中“if __name__ == '__main__'”語句的作用
1、
首先用最簡潔的語言來說明一下 if __name__ == '__main__': 的作用:防止在被其他檔案匯入時顯示多餘的程式主體部分。
先舉個例子,如果不用 if __name__ == '__main__': 會發生什麼事:
首先在yy.py中呼叫cs.py
#yy.py
import cs
print('引用cs')
cs.cs()
print('程式結束!')
cs.py檔案如下
#cs.py
def cs():
print('一開啟cs!')
print('cs主函式!')
執行結果會是:
cs主函式!
引用cs
一開啟cs!
程式結束!
分析:也就是說,如果你的目的只是呼叫cs.py中的cs()函式,那麼你在匯入的時候就不要使用import cs
因為一旦你使用了import cs
那麼在執行至這一句匯入程式碼時會自動執行一次cs.py,cs.py中的函式被封裝不會被直接執行,但是cs.py中有沒被封裝的語句:
print('cs主函式!')
因此,這一句就會被多餘地執行,哪怕你完全不需要這一句,你的目的只是呼叫cs.py中的cs()函式
就算是使用
from cs import cs
執行結果還是一樣。
那麼怎麼才能避免執行不需要的程式碼段呢?那就把不需要的程式碼段也當成函式執行,但是這個函式有點特殊,他要區分是自身執行還是被呼叫匯入而執行,如果是自身執行那麼就把那些程式碼段顯示出來,如果被呼叫就遮蔽掉。
於是 if __name__ == '__main__': 便應運而生
我們修改一下程式碼
只修改一下cs.py的程式碼:
def cs():
print('已開啟cs!')
if __name__ == '__main__':
print('cs主函式!')
之後執行yy.py
結果如下:
引用cs
已開啟cs!
程式結束!
到這一步,大家應該知道 if __name__ == '__main__': 是幹什麼用的了吧!