1. 程式人生 > 實用技巧 >淺析Python中的main函式

淺析Python中的main函式

Python作為一門較為靈活的解釋型指令碼語言,其中定義的main()函式只有當該Python指令碼直接作為執行程式時才會執行;

當該python指令碼被作為模組(module)引入(import)時,其中的main()函式將不會被執行。

這是由於兩方面原因,一方面,main函式是所有執行程式的入口;另一方面,python的直譯器是順序執行指令碼的並且不會呼叫任何不屬於程式本身的程式碼和函式,需要補充說明的一點是,如果是被作為一個模組或庫import到程式中,則會直接成為程式碼的一部分。

下面可以通過程式來更好地瞭解main函式的作用,這裡我們編寫兩段程式print_main_function.py和print_main_module.py

print_main_function.py

# import os
# import time
import datetime

print('Hello World!')
print('Time is ', datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S %A'))
print('__name__ value: ', __name__)


def main():
    print('this message is from main function')


if __name__ == '__main__':
    main()
    
# print(__name__)

print_main_module.py

import print_main_function

print("Done!")

單獨執行print_main_function.py程式,結果如下

執行print_main_module.py程式(將print_main_function.py作為module引入執行),結果如下

對比兩段程式執行結果可發現,當直接執行包含main函式的程式時,main函式會被執行,同時程式的__name__變數值為'__main__'。

當包含有main函式的程式被作為module被import時,該module程式(print_main_function.py)對應的__name__變數值為該module對應的函式名稱,因此該module程式(print_main_function.py)中的main函式不會被執行。

結論:因此需要注意的是,python程式是逐行執行的,因此事先定義main()函式很重要,以防程式中有if條件語句去執行main()函式,這樣就可以避免程式執行報錯NameError: name "main" not defined