Python代碼中,我們經常會看到如下的代碼段:
def main ():
pass
if __name__=='__main__':
main()
if __name__=='__main__'究竟是什麼意思,下面結合代碼實例,對其進行解讀.首先看test.py程序:
test.py
print(__name__)
'''
def main ():
pass
if __name__=='__main__':
main()
'''
Test.py的執行結果如下所示:
打印出__name__,得到的結果是__main__.這說明,Python在執行代碼的時候設置了一些特殊變量,顯然name就是這樣的特殊變量之一,當Python直接運行一個Python代碼的時候,將name特殊變量置爲main.
再編寫一個test_1.py文件,在這個文件中只有一行import 代碼,調用test.py
import test
在test_1.py中調用test.py,執行的結果爲:
當Python通過調用的但是執行一個Python文件的時候,被調用的Python文件中的name被置爲文件本來的名字,在我的程序中就是test.
因此if __name__=='__main__',用來判斷這個Python文件是否被直接執行,如果是直接執行則運行if下的代碼,如果是調用執行,則運行else之後的代碼.通過下面的兩個文件說明.
first_model.py
print("永遠都會被執行的一行print代碼")
def main() :
print("這個程序被直接執行")
pass
if __name__=='__main__':
main()
else:
print("這個程序被調用執行")
直接執行first_model.py的結果爲:
second_model.py 在second_model.py中調用first_model
import first_model as fm
fm.main()
執行結果爲: