Python 中 main 語句的作用整理:
1、Python 語句中可以不包含主函數 main 函數;
2、if __name__=='__main__' 語句是為了自我調試代碼方便,作為執行程序的入口,在 Python 腳本作為 module 被 import 時該語句下代碼不運行;
下面編寫兩個測試代碼:print_test.py、print_test_module.dy,
print_test.py (這里的 main 部分可以沒有)如下:
1 import datetime 2 print('Hello World') 3 print('Time is',datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) 4 print('__name__ value: ', __name__) 5 6 def main(): 7 print('This is main function') 8 9 if __name__=='__main__': 10 #main() 11 print('HaHa') 12
print_test_module.py 如下:
1 import print_test 2 print('將print_test.py作為module導入執行')
單獨運行 print_test.py 時,結果如下:
1 Hello World 2 Time is 2021-08-24 15:48:54 3 __name__ value: __main__ 4 HaHa
單獨運行 prin_test_module.py 時,結果如下:
1 Hello World 2 Time is 2021-08-24 15:53:48 3 __name__ value: print_test 4 將print_test.py作為module導入執行
對比兩段程序運行結果可發現,當直接運行包含 main 函數的程序時,main 函數會被執行,同時程序的__name__變量值為'__main__'。
當包含有 main 函數的程序 print_test.py 被作為 module 被 import 時,print_test_module.py 對應的__name__變量值為該 module 對應的函數名稱 print_test,因此 print_test.py 中的 main 函數不會被執行。
若想在 print_test_module.py 中也執行 main 函數,則需要添加語句:print_test.main(),即
1 import print_test 2 print('將print_test.py作為module導入執行') 3 print_test.main() 4 5 結果: 6 Hello World 7 Time is 2021-08-24 15:56:59 8 __name__ value: print_test 9 將print_test.py作為module導入執行 10 This is main function
可以看到,main 函數就執行了。