初次接觸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__
當你以子產品導入使用時,這個屬性便是這個子產品的名字。
在C/C++/java中,main是程式執行的起點,python中,也有類似的運作機制,但方式卻截然不同:python使用縮進對齊組織代碼的執行,所有沒有縮進的代碼(非函數定義和類定義),都會在載入時自動執行,這些代碼,可以認為是Python的main函數。
每個檔案(子產品)都可以任意寫一些沒有縮進的代碼,并且在載入時自動執行,為了區分主執行檔案還是被調用的檔案,Python引入了一個變量__name__,當檔案是被調用時,__name__的值為子產品名,當檔案被執行時,__name__為'__main__'。這個特性,為測試驅動開發提供了極好的支援,我們可以在每個子產品中寫上測試代碼,這些測試代碼僅當子產品被Python直接執行時才會運作,代碼和測試完美的結合在一起。
總結:
1). python 代碼的執行不依賴于 main() 函數;
2). python 代碼從沒有縮進的代碼開始執行。
例子:
import os,sys
import time
if __name__ == "__main__":
print("Hello python !!!")
def func_print():
print("in func_print")
def main():
print("In main")
main()
執行結果:
Hello python !!!
In mainimport os,sys
import time
print("Hello python !!!")
def func_print():
print("in func_print")
def main():
print("In main")
#main()
func_print()