這篇文章給大家分享的是有關(guān)Python風(fēng)格的函數(shù)分配參數(shù)是什么的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供王屋網(wǎng)站建設(shè)、王屋做網(wǎng)站、王屋網(wǎng)站設(shè)計、王屋網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、王屋企業(yè)網(wǎng)站模板建站服務(wù),10年王屋做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
一、分配參數(shù)的定義
參數(shù)收集就是在定義函數(shù)時不能確認(rèn)參數(shù)個數(shù),用收集參數(shù)將調(diào)用時不確定數(shù)量的實(shí)參存放到收集參數(shù)的元組中。分配參數(shù)與此過程相反,它不是在定義函數(shù)形參時使用星號(1個或2個),而是在調(diào)用函數(shù)傳遞實(shí)參時使用星號(1個或2個)來傳遞多個參數(shù)。
二、分配參數(shù)的使用
1.使用1個星號的分配參數(shù)
使用1個星號的實(shí)參時,實(shí)參為一個元組、列表、字典或集合,該實(shí)參內(nèi)的元素將按參數(shù)順序傳遞給函數(shù),但由于字典實(shí)際傳值取的是鍵,集合的元素沒有順序,因此不建議使用字典和集合傳值。
舉例:
>>> def ?cal(calmethod,number1,number2,*numbers): print('number1=',number1,',number2=',number2,',numbers=',numbers,', calmethod=',calmethod) >>> paras=('+',1,2,3,4) #元組分配參數(shù)傳值 >>> cal(*pars) number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= + >>> paras=['+',1,2,3,4] >>> cal(*paras) #列表分配參數(shù)傳值 number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= + >>> paras={'+',1,2,3,4} >>> cal(*paras) #集合分配參數(shù)傳值,順序變化了 number1= 2 ,number2= 3 ,numbers= (4, '+') , calmethod= 1 >>> paras={'+':10,1:20,2:30,3:40,4:50} >>> cal(*paras) #字典分配參數(shù)傳值,取的是鍵作為參數(shù) number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +
從上面的例子可以看出,一個星號的收集參數(shù)可以通過1個星號的分配參數(shù)方式傳值。
分配參數(shù)實(shí)際上就是將實(shí)參傳遞的序列數(shù)據(jù)解包給對應(yīng)形參的過程。
2.使用2個星號的分配參數(shù)
使用2個星號的實(shí)參時,實(shí)參為一個字典,該字典內(nèi)的元素將按關(guān)鍵字參數(shù)模式傳遞給函數(shù),其中的鍵為關(guān)鍵字參數(shù),值為關(guān)鍵字參數(shù)對應(yīng)的實(shí)參值。使用這種模式要求該實(shí)參位于參數(shù)列表末尾。還是以上面函數(shù)為例:
\>>> paras={'calmethod':'+','number1':1,'number2':2,'numbers':[3,4,5]} \>>> cal(**paras) #報錯遇到?jīng)]有預(yù)期的關(guān)鍵字參數(shù)'numbers' \>>> paras={'calmethod':'+','number1':1,'number2':2,'numbers':(3,4,5)} \>>> cal(**paras) #報錯遇到?jīng)]有預(yù)期的關(guān)鍵字參數(shù)'numbers' \>>> paras={'calmethod':'+','number1':1,'number2':2,'*numbers':(3,4,5)} \>>> cal(**paras) #報錯遇到?jīng)]有預(yù)期的關(guān)鍵字參數(shù)'*numbers' \>>> paras={'calmethod':'+','number1':1,'number2':2} \>>> cal(**paras) number1= 1 ,number2= 2 ,numbers= () , calmethod= +
從上面的案例可以看出來:
1) 兩個星號的參數(shù)分配不能給兩個星號的收集參數(shù)傳值,因?yàn)檫@沒有意義,還不如直接使用形參為字典類型實(shí)參是字典數(shù)據(jù)進(jìn)行操作。2) 分配參數(shù)模式和收集參數(shù)模式可以并存,如上面的例子,但這種使用方式意義不大,一般不建議使用。
感謝各位的閱讀!關(guān)于Python風(fēng)格的函數(shù)分配參數(shù)是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!