在乙個.py
檔案中,如果不是在定義函式,也就是說不是在def關鍵字的內嵌結構內,python會預設其餘部分函式是main函式,並自動執行,但正規工程中,一般都會將main函式寫為:
if __name__ == __main__
每個人都在寫,但很少有人問,其實這個用法很巧妙!
#hello.py
defsayhello
(): str="hello"
print(str);
if __name__ == "__main__":
print ('this is main of module "hello.py"')
sayhello()
當單獨執行該module時,比如單獨執行以上hello.py: python hello.py,則輸出
this is main of
module
"hello.py"
hello
可以理解為」ifname==」main「:」 這一句與c中的main()函式所表述的是一致的,即作為入口
當該module被其它module 引入使用時,其中的」ifname==」main「:」所表示的block不會被執行,這是因為此時module被其它module引用時,其name的 值將發生變化,name的值將會是module的名字。比如在python shell中import hello後,檢視hello.name:
>>>
import hello
>>> hello.__name__
'hello'
>>>
因此,在python中,當乙個module作為整體被執行
時,moduel.name的值將是」main「;而當乙個 module被其它module引用
時,module.name將是module自己的名字,當然乙個module被其它module引用時,其 本身並不需要乙個可執行的入口main了。可以說python中的這種用法很靈活啊。 main函式入口
最近在弄boost test單元測試的時候,遇到了乙個執行程式後就閃退掉的問題,找了好久才發現,原來是沒有進入到boost 自己的main函式中,因為鏈結的其他lib中,有乙個檔案也定義了main函式,編輯器最終是選擇了那個main函式作為程式的入口。在vs下 main函式 通常是 int tmai...
Linux上程式執行的入口 Main
main 函式,想必大家都不陌生了,從剛開始寫程式的時候,大家便開始寫main 我們都知道main是程式的入口。那main作為乙個函式,又是誰呼叫的它,它是怎麼被呼叫的,返回給誰,返回的又是什麼?這次我們來 一下這個問題。1.main 函式的形式 先來說說main函式的定義,較早開始寫c程式的肯定都...
Android NDK AS模擬main入口
新建studycpp包,然後在cmakelists.txt中引入studycpp包下所有檔案,如下 建立mylog.h用於列印日誌,如下 使用ndk裡面的日誌庫來列印 liblog.so include define tag hongx define logd android log print a...