Python main()函數解析


__main__ — Top-level script environment

'__main__'是頂級代碼執行的作用域的名字。

當一個模塊從標准input, 一個腳本文件,或一個交互命令read讀入時,它的__name__等於'__main__'。

 

程序入口

C 和 C++ 都需要有一個 main 函數來作為程序的入口,也就是程序的運行會從 main 函數開始。同樣,Java 和 C# 必須要有一個包含 Main 方法的主類來作為程序入口。

#include <stdio.h>
 
int main()
{
    /* 我的第一個 C 程序 */
    printf("Hello, World! \n");
 
    return 0;
}

而 Python 則有不同,它屬於腳本語言,不像編譯型語言那樣先將程序編譯成二進制再運行,而是動態的逐行解釋運行。也就是從腳本第一行開始運行,沒有統一的入口。

 

一個 Python 源碼文件除了可以被直接運行外,還可以作為模塊(也就是庫)被導入。不管是導入還是直接運行,最頂層的代碼都會被運行(Python 用縮進來區分代碼層次)。而實際上在導入的時候,有一部分代碼我們是不希望被運行的。

例如,下面的例子。

#linshi.py
PI = 3.14

def main():
    print ("PI:", PI)
main()

 

#example.py
from linshi import PI

def calc_round_area(radius):
    return PI * (radius ** 2)

def main():
    print ("round area: ", calc_round_area(2))

main()

 

執行python3 example.py后在輸出:

PI: 3.14
round area:  12.56

 

這是因為linshi.py中有main()這行代碼。實際上不希望運行linshi.py中的main函數。修改linshi.py:

PI = 3.14

def main():
    print ("PI:", PI)

# main() 加上一個判斷:
if __name__ == '__main__':
    main()

 

解釋:

example.py從命令行read時,__name__就等於'__main__'。

linshi.py作為模塊導入時,__name__則被賦值為模塊自身的名字,即linshi。

 

Python -m 參數解析

https://a7744hsc.github.io/python/2018/05/03/Run-python-script.html

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM