要搞清楚這個問題,要知道以py作為后綴的Python代碼檔案,有兩種使用方式,第一種方式是直接運行,另一種方式是作為模塊被別的py檔案匯入,
當采用第一種方式直接運行自身時,name__的值為__main;
當采用第二種方式被別的模塊匯入時,其__name__的值為其檔案名(通常也稱為模塊名);
舉例實測如下:
用PyCharm新建一個Python工程后,新建兩個py檔案,檔案名分別為AAA.py和BBB.py
然后在AAA.py中寫上如下代碼:
print('當前AAA.py中__name__的值為:', __name__)
在BBB.py中寫上如下代碼:
import AAA
然后分別運行這兩個Python檔案,結果如下:
運行AAA.py的結果如下:

運行BBB.py的結果如下:

這個示例除了應證了上面說的py檔案的兩種使用方式,還表明使用import匯入py檔案/模塊時,這個被匯入的py檔案中沒有縮進的代碼會被全部執行一遍,
這樣就帶來了一個問題,如果我在匯入模塊AAA.py時如果有想代碼不想被執行,那么該怎么做呢?陳述句“if name == ‘main’”就能實作這個作用,具體怎么用,有朋友看了上面的例子應該已經明白了,如果還不明白,請看下面這個例子:
修改上面的AAA.py的代碼為如下代碼:
print('\n')
print('當前AAA.py中__name__的值為“{}”'.format(__name__))
if __name__ == '__main__':
print('\n')
print('當前運行的檔案是AAA.py')
else:
print('\n')
print('當前AAA.py是作為模塊被其它py檔案匯入')
再次分別運行AAA.py和BBB.py,結果分別如下:


可見通過陳述句“if name == ‘main’,就能判斷出一個py檔案是直接運行還是作為模塊檔案被別的py檔案匯入的,進而通過這個判斷實作一些代碼的不被執行,
那么通常來說哪些代碼不希望被執行呢?當檔案被作者定義為一個模塊時,里面難免含有一些測驗代碼,當模塊被import時,這些代碼是不希望被執行的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/430267.html
標籤:AI
上一篇:TensorFlow2 入門指南 | 18 keras.callbacks 回呼使用方法
下一篇:大資料Java基礎DAY21——集合完結(Map介面,HashMap,Linked Hash Map,TreeMap,Collections類)
