在Python中,經常能看到下面這句話:
if __name__ == '__main__':
那麼這句話的作用是什麼呢?首先上結論:
1、當.py檔案自己運作時,main下面的代碼執行
2、當.py檔案被其他檔案引用時,main下面的代碼不執行
為了驗證上面的結論,來看一個小例子:
建立一個first.py檔案,在檔案中鍵入以下代碼:
# first.py
def hello_world():
print('hello world')
print(__name__) #輸出__main__
if __name__ == '__main__':
print('this is main')
hello_world()
然後,運作first.py檔案,首先執行print語句,然後進入if語句,執行hello_world(),結果如下。可以看到,單獨執行一個.py時,main下面的語句被執行。
接下來建立一個second.py,second.py的主要作用是引入first.py。second.py中的代碼如下:
# second.py
import first
first.hello_world()
結果如下圖,first.py被作為module引入到second.py中,是以print(name)的輸出為first,這剛好是first.py檔案的名字。然後由于name的值與‘main ’不相同,是以if内的代碼不執行。最後執行first.hello_world(),輸出”hello_world”