1. 程式人生 > >python中為什麼需要使用“if __name__ == '__main__'”語句

python中為什麼需要使用“if __name__ == '__main__'”語句

首先用最簡潔的語言來說明一下 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__': 是幹什麼用的了吧!