人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

Python 函數(shù)那不為人知的一面

發(fā)布日期:2021-12-13 04:24 | 文章來源:gibhub

通常我們定義一個(gè)函數(shù),然后調(diào)用該函數(shù)時(shí),函數(shù)相關(guān)的代碼才開始執(zhí)行??墒呛芏嗳瞬⒉恢溃?dāng)我們定義函數(shù)時(shí),一些代碼就開始執(zhí)行了。今天就來說說函數(shù)這個(gè)不為人知的一面。

通常我們定義一個(gè)函數(shù),然后調(diào)用該函數(shù)時(shí),函數(shù)相關(guān)的代碼才開始執(zhí)行??墒呛芏嗳瞬⒉恢溃?dāng)我們定義函數(shù)時(shí),一些代碼就開始執(zhí)行了。今天就來說說函數(shù)這個(gè)不為人知的一面。

先看一段代碼:

def do_something(opt: print('參數(shù) opt'), arg=print('參數(shù) arg')) -> print('函數(shù)的返回值'): 
 print("do something runing") 
 
if __name__ == '__main__': 
 pass 

上面的代碼我們定義來一個(gè)函數(shù),但是并沒有調(diào)用它,那么它會(huì)輸出信息嗎?

會(huì)的,參數(shù)里無論是類型提示部分,還是默認(rèn)賦值部分,還是返回值的類型提示,里面的語句都會(huì)被執(zhí)行,結(jié)果如下:

這個(gè)做法我自己是很少見的。把 print 函數(shù)換成打開文件、連接數(shù)據(jù)庫之類的操作,也都會(huì)被執(zhí)行。

不過通常情況下,參數(shù)都是不可變類型,如果傳入可變類型,可能每次的函數(shù)調(diào)用,其結(jié)果都會(huì)被改變,例如:

def do_something(opt: print("參數(shù) opt"), arg=[]) -> print("函數(shù)的返回值"): 
 print("do something runing") 
 print(f"{arg = }") 
 arg.append(0) 
 
if __name__ == "__main__": 
 do_something(opt=1) 
 do_something(opt=1) 

運(yùn)行結(jié)果如下:

可以發(fā)現(xiàn),調(diào)用兩次函數(shù) do_something,雖然并沒有傳入 arg 參數(shù),arg 的值已經(jīng)發(fā)送了變化。如果不注意這點(diǎn),可能會(huì)有 bug 發(fā)生。在 Pythcarm 中,會(huì)警告我們 arg 是可變對象:

如果要獲取函數(shù)的類型提示、默認(rèn)值,可以這樣:

def do_something(opt: 1, arg=2) -> 3: 
 print("do something runing") 
 print(f"{arg = }") 
 arg.append(0) 
 
 
if __name__ == "__main__": 
 print(f"{do_something.__annotations__ = }") 
 print(f"{do_something.__defaults__ = }") 
 
#do_something.__annotations__ = {'opt': 1, 'return': 3} 
#do_something.__defaults__ = (2,) 

到此這篇關(guān)于Python 函數(shù)那不為人知的一面的文章就介紹到這了,更多相關(guān)Python 函數(shù)內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部