python 從哪開始執行 之 main 函數

[ Python ] python 從哪開始執行 之 main 函數

轉載 2013年04月11日 08:53:07

http://www.cnblogs.com/lvxiuquan/archive/2012/07/09/2582437.html

python main函數

初次接觸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 代碼從沒有縮進的代碼開始執行。


例子:


[python] view plain copy
  1. $ cat main.py   
  2. #! /usr/bin/env python  
  3.   
  4. """ 
  5. @file main.py 
  6.  
  7. @brief main.py for testing python main entry. 
  8. """  
  9.   
  10. import os,sys  
  11. import time  
  12.   
  13. if __name__ == "__main__":  
  14.     print("Hello python !!!")  
  15.   
  16.     def func_print():  
  17.         print("in func_print")  
  18.   
  19.     def main():  
  20.         print("In main")  
  21.   
  22.     main()  
[python] view plain copy
  1. $ ./main.py   
  2. Hello python !!!  
  3. In main  
[python] view plain copy
  1.   
[python] view plain copy
  1. $ cat main2.py   
  2. #! /usr/bin/env python  
  3.   
  4. """ 
  5. @file main.py 
  6.  
  7. @brief main.py for testing python main entry. 
  8. """  
  9.   
  10. import os,sys  
  11. import time  
  12.   
  13. print("Hello python !!!")  
  14.   
  15. def func_print():  
  16.     print("in func_print")  
  17.   
  18. def main():  
  19.     print("In main")  
  20.   
  21. #main()  
  22. func_print()  
[python] view plain copy
  1. $ ./main2.py   
  2. Hello python !!!  
  3. in func_print  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章