在乙個.py檔案中,如果不是在定義函式,也就是說不是在def關鍵字的內嵌結構內,python會預設其餘部分函式是main函式,並自動執行,但正規工程中,一般都會將main函式寫為:if__name__==__main__
每個人都在寫,但很少有人問,其實這個用法很巧妙!
? 1
2
3
4
5
6
7
8
#hello.py
def sayhello():
str=
"hello"
print(str);
if
__name__ ==
"__main__"
:
print (
'this is main of module "hello.py"'
)
sayhello()
當單獨執行該module時,比如單獨執行以上hello.py: python hello.py,則輸出
? 1
2
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:
? 1
2
3
4
>>>
import
hello
>>> hello.__name__
'hello'
>>>
因此,在python中,當乙個module作為整體被執行時,moduel.name的值將是」main「;而當乙個 module被其它module引用時,module.name將是module自己的名字,當然乙個module被其它module引用時,其 本身並不需要乙個可執行的入口main了。可以說python中的這種用法很靈活啊。
Python 程式入口main函式
在乙個.py檔案中,如果不是在定義函式,也就是說不是在def關鍵字的內嵌結構內,python會預設其餘部分函式是main函式,並自動執行,但正規工程中,一般都會將main函式寫為 if name main 每個人都在寫,但很少有人問,其實這個用法很巧妙!hello.py defsayhello st...
Python 入口函式(菜鳥入門)
python 入口函式 菜鳥入門 原創iron ye 最後發布於2018 04 22 22 41 55 閱讀數 10598 收藏 展開python 入口函式 菜鳥入門 最近在組內研究專項專案,其中的乙個現有工具是用 python 開發的,我的目標是對這款工具的流程進行優化。雖然可以找到對應的開發者了...
main函式入口
最近在弄boost test單元測試的時候,遇到了乙個執行程式後就閃退掉的問題,找了好久才發現,原來是沒有進入到boost 自己的main函式中,因為鏈結的其他lib中,有乙個檔案也定義了main函式,編輯器最終是選擇了那個main函式作為程式的入口。在vs下 main函式 通常是 int tmai...