我的博客
在寫python腳本的時候,例如,我寫一個test1.py
def test(n): print(n) if __name__ == '__main__': n = 1 test(1)
接下來打開cmd命令視窗,執行命令
python test.py
結果是把1列印出來
這時候就會有同學有疑問了,我直接寫不行么,在test1.py的同一個目錄下創建test2.py
def test(n): print(n) n = 1 test(1)
這時候嘗試執行test2.py,執行結果是一樣的,那我干嘛非要多浪費一行代碼寫那玩意呢
其實python有個特性,就是這個檔案是可以通過import在另一個python腳本中參考的,現在,在test1.py的同一個目錄下加一個空檔案的__init__.py,其實不加也行,系統會自動生成
然后在修改下test1.py這個檔案
import test2 #增加這行,參考剛剛的test2 def test(n): print(n) if __name__ == '__main__': n = 1 # test(1) 把這行注釋掉,不執行 test2.test(n)
執行python test1.py測驗下

這里會列印出兩個1,是不是很奇怪,按理說應該和直接執行test2時候是一樣的,列印一個1啊,這就不得不說到__name__這個系統變數了,現在把test2.py改一下
def test(n): print(n) print('__name__ is: ' + __name__) #把__name__的資訊列印出來 n = 1 test(1)
再次執行test1.py

看到沒,在參考的時候__name__變數是test2,就是參考的檔案名,所以if __name__ == '__main__'是False,不會執行
現在直接執行test2.py

看到了吧,直接執行test2.py的時候__name__變數是__main__,那么if __name__ == '__main__'就成了True,會執行
也就是說if __name__ == '__main__'加上這句實際上是為了避免呼叫的時候錯誤的把測驗的內容執行了,現在再改下test2.py
def test(n): print(n) # 加上if __name__ == '__main__' if __name__ == '__main__': print('__name__ is: ' + __name__) #把__name__的資訊列印出來 n = 1 test(1)
再次執行test1.py,現在的執行結果就是期望的一個1的結果啦
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/510989.html
標籤:其他
上一篇:CentOS部署MySQL
