關於Python的主(main)函數問題
2007-07-23 19:14
初次接觸Python的人會很不習慣Python沒有main主函數。
這里簡單的介紹一下,在Python中使用main函數的方法
#hello.py
def foo():
str="function"
print(str);
if __name__=="__main__":
print("main")
foo()
其中if __name__=="__main__":這個程序塊類似與Java和C語言的中main(主)函數
在Cmd中運行結果
C:\work\python\divepy>python hello.py
main
function
在Python Shell中運行結果
>>> import hello
>>> hello.foo()
function
>>> hello.__name__
'hello'
>>>
可以發現這個內置屬性__name__自動的發生了變化。
這是由於當你以單個文件運行時,__name__便是__main__
當你以模塊導入使用時,這個屬性便是這個模塊的名字。
這里簡單的介紹一下,在Python中使用main函數的方法
#hello.py
def foo():
str="function"
print(str);
if __name__=="__main__":
print("main")
foo()
其中if __name__=="__main__":這個程序塊類似與Java和C語言的中main(主)函數
在Cmd中運行結果
C:\work\python\divepy>python hello.py
main
function
在Python Shell中運行結果
>>> import hello
>>> hello.foo()
function
>>> hello.__name__
'hello'
>>>
可以發現這個內置屬性__name__自動的發生了變化。
這是由於當你以單個文件運行時,__name__便是__main__
當你以模塊導入使用時,這個屬性便是這個模塊的名字。
在C/C++/Java中,main是程序執行的起點,Python中,也有類似的運行機制,但方式卻截然不同:Python使用縮進對齊組織代碼的執行,所有沒有縮進的代碼(非函數定義和類定義),都會在載入時自動執行,這些代碼,可以認為是Python的main函數。
每個文件(模塊)都可以任意寫一些沒有縮進的代碼,並且在載入時自動執行,為了區分主執行文件還是被調用的文件,Python引入了一個變量__name__,當文件是被調用時,__name__的值為模塊名,當文件被執行時,__name__為'__main__'。這個特性,為測試驅動開發提供了極好的支持,我們可以在每個模塊中寫上測試代碼,這些測試代碼僅當模塊被Python直接執行時才會運行,代碼和測試完美的結合在一起。
典型的Python文件結構: