[ Python ] python 從哪開始執行 之 main 函數
http://www.cnblogs.com/lvxiuquan/archive/2012/07/09/2582437.html
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 代碼從沒有縮進的代碼開始執行。
例子:
- $ cat main.py
- #! /usr/bin/env python
- """
- @file main.py
- @brief main.py for testing python main entry.
- """
- import os,sys
- import time
- if __name__ == "__main__":
- print("Hello python !!!")
- def func_print():
- print("in func_print")
- def main():
- print("In main")
- main()
- $ ./main.py
- Hello python !!!
- In main
- $ cat main2.py
- #! /usr/bin/env python
- """
- @file main.py
- @brief main.py for testing python main entry.
- """
- import os,sys
- import time
- print("Hello python !!!")
- def func_print():
- print("in func_print")
- def main():
- print("In main")
- #main()
- func_print()
- $ ./main2.py
- Hello python !!!
- in func_print