函數是C程序的入口點怎么理解?
對于很多編程語言來說,程序都必須要有一個入口,比如 C,C++,以及完全面向對象的編程語言 Java,C# 等。如果你接觸過這些語言,對于程序入口這個概念應該很好理解,C 和 C++ 都需要有一個 main 函數來作為程序的入口,也就是程序的運行會從 main 函數開始。同樣,Java 和 C# 必須要有一個包含 Main 方法的主類來作為程序入口。而 Python 則有不同,它屬于腳本語言,不像編譯型語言那樣先將程序編譯成二進制再運行,而是動態的逐行解釋運行。也就是從腳本第一行開始運行,沒有統一的入口。
一段好的示例代碼勝過一切
這里有倆個程序
const.py用來定義常數PI
area.py需要PI這個常數來計算圓的面積
const.py 代碼如下:
PI = 3.14def main(): print "PI:", PImain()當運行python const.py,輸出
PI: 3.14area.py (導入PI的值來計算圓面積)代碼如下
from const import PIdef calc_round_area(radius): return PI * (radius ** 2)def main(): print "round area: ", calc_round_area(2)main()當運行python area.py,因為導入了const,輸出
PI: 3.14round area: 12.56可以看到
const.py里面的main()也被執行了
但這是我們所不希望的
怎么辦?
只需在const.py中加入一句:
PI = 3.14def main(): print "PI:", PIif __name__ == "__main__": main()_name_代表當前模塊的名字
當我們再次運行“python area.py”時
對于const.py來說
_name_不再是_main_
因此其中的main()不再被執行
最終得到我們想要的輸出
round area: 12.56以上示例代碼及注釋部分取自博文(非常好的總結文章,還詳細解釋了_name_):
Python 中的 if __name__ == '__main__' 該如何理解