1. 程式人生 > 其它 >python 中“if __name__ == '__main__'”語句的作用

python 中“if __name__ == '__main__'”語句的作用

1、

https://blog.csdn.net/qq_27017791/article/details/80212016?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.base

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