Python函數(shù)參數(shù)的4種方式
Python的函數(shù)參數(shù)有4種:
- 必選參數(shù):函數(shù)調(diào)用時必須賦值的參數(shù)
- 默認(rèn)參數(shù):函數(shù)定義時,賦予默認(rèn)值的參數(shù),位于必選參數(shù)之后。如def test(param,default=3),default為默認(rèn)參數(shù),函數(shù)調(diào)用時,如果沒有給default賦值,則使用其默認(rèn)值3參與運(yùn)算;否則使用函數(shù)調(diào)用時,用戶自定義的值
- 可選參數(shù):函數(shù)定義時以*開頭,表示0個或多個可選參數(shù)。當(dāng)不確定函數(shù)的參數(shù)個數(shù)時,可使用。位于默認(rèn)參數(shù)之后。將除去必選參數(shù)與默認(rèn) 參數(shù)之外的不含參數(shù)名的所有參數(shù)打包為一個元祖,該元祖即為可選參數(shù)。
- 關(guān)鍵字參數(shù):函數(shù)定義時以**開頭,表示0個或多個關(guān)鍵字參數(shù)。函數(shù)調(diào)用時,參數(shù)需要參數(shù)名,如test(1,2,3,4,kw1=5,kw2=6),kw1=5和kw2=6就是兩個關(guān)鍵字參數(shù),kw1和kw2是參數(shù)名。關(guān)鍵字參數(shù)在函數(shù)中是字典格式,參數(shù)名為key,參數(shù)值為value。
def test(param,default=0,*args,**kw): print('必選參數(shù)為:', param) print('默認(rèn)參數(shù)為:',default) print('可選參數(shù)為:',args) print('關(guān)鍵字參數(shù)為:',kw) test(1,2,3,4,kw1=5,kw2=6)
輸出結(jié)果為:
必選參數(shù)為:1
默認(rèn)參數(shù)為:2
可選參數(shù)為:(3,4)
關(guān)鍵字參數(shù)為:{'kw1':5,'kw2':6}
注意點(diǎn):
1)默認(rèn)參數(shù):
- 若有多個默認(rèn)參數(shù),如def test(param,default1=1,default2=2,default3=3),可按順序賦值 ,如test(1,2,3,4),得到default1=2,default2=3,default3=4 ;也可以不按順序賦值,如test(1,default2=0,default1=5,default3=1) ,得到default1=5,default2=0,default3=1。
- 由于Python的默認(rèn)值參數(shù)只會在函數(shù)定義處被解析一次,以后每次調(diào)用函數(shù)的時候,默認(rèn)值參數(shù)都會是這個值。若默認(rèn)值參數(shù)是一些不可變的數(shù)據(jù)類型,如整型、字符串等,不會有問題。但遇到可變數(shù)據(jù)類型,如數(shù)組,就會出現(xiàn)問題。
def add(num, valuelist=[]): valuelist.append(num) print(id(valuelist),valuelist) add(1) //輸出 102003080 [1] add(2) //輸出 102003080 [1,2] add(3) //輸出 102003080 [1,2,3]
valuelist在函數(shù)第一次被解析的時候會被賦值為空數(shù)組,因?yàn)橹粫唤馕鲆淮?,以后每次調(diào)用都會在此基礎(chǔ)上變化。
2)可選參數(shù)
若要把一個數(shù)組中的值解構(gòu)后賦值給可選數(shù)組,可在數(shù)組名前加一個*號,把數(shù)組元素傳給可變參數(shù)。
a=[3,4] //調(diào)用上述的test()函數(shù) test(1,2,a) //輸出為...可選參數(shù)為:([3,4],) test(1,2,*a) //輸出為...可選參數(shù)為:(3,4)
3)關(guān)鍵字參數(shù)
與可選參數(shù)類似,如果要把一個字典傳遞給關(guān)鍵字參數(shù),只需要在字典名前加**號。
b={'kw1':5,'kw2':6} //調(diào)用上述的test()函數(shù) test(1,2,3,4,**b) //輸出為...關(guān)鍵字參數(shù)為:{'kw1':5,'kw2':6}
到此這篇關(guān)于Python函數(shù)參數(shù)的4種方式的文章就介紹到這了,更多相關(guān)Python函數(shù)參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Python 常用獲取元素 Driver 總結(jié)
今天小編就為大家分享一篇關(guān)于Python 常用獲取元素 Driver 總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11pytorch finetuning 自己的圖片進(jìn)行訓(xùn)練操作
這篇文章主要介紹了pytorch finetuning 自己的圖片進(jìn)行訓(xùn)練操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06使用Cython中prange函數(shù)實(shí)現(xiàn)for循環(huán)的并行
Cython中提供了一個prange函數(shù),專門用于循環(huán)的并行執(zhí)行。這個 prange的特殊功能是Cython獨(dú)一無二的,并且prange只能與for循環(huán)搭配使用,不能獨(dú)立存在。本文就將使用 prange 實(shí)現(xiàn) for 循環(huán)的并行,感興趣的可以了解一下2022-08-08django文檔學(xué)習(xí)之a(chǎn)pplications使用詳解
這篇文章主要介紹了Python文檔學(xué)習(xí)之a(chǎn)pplications使用詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01python解決12306登錄驗(yàn)證碼的實(shí)現(xiàn)
這篇文章主要介紹了python解決12306登錄驗(yàn)證碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Pandas之ReIndex重新索引的實(shí)現(xiàn)
這篇文章主要介紹了Pandas之ReIndex重新索引的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06