形參的分類(lèi)
形參的分類(lèi)可以分為六種:
- 帶有默認(rèn)值的位置形參
- 不帶默認(rèn)值的位置形參
- 帶有默認(rèn)值的關(guān)鍵字形參
- 不帶默認(rèn)值的關(guān)鍵字形參
- 可變長(zhǎng)度的位置形參
- 可變長(zhǎng)度的關(guān)鍵字形參
實(shí)例:
def fn(a,b,c=10,*,d,e=20,**kwargs)
1、帶及不帶默認(rèn)值的位置形參
實(shí)例中,在 * 號(hào)之前統(tǒng)稱(chēng)為位置形參,位置形參可以由位置實(shí)參及關(guān)鍵字實(shí)參進(jìn)行傳值。
不帶默認(rèn)值的位置形參:不帶有默認(rèn)值的位置形參必須要實(shí)參進(jìn)行傳值,如果實(shí)參不傳值就會(huì)報(bào)錯(cuò)
帶有默認(rèn)值的位置形參:帶有默認(rèn)值的關(guān)鍵字位置實(shí)參可以用實(shí)參進(jìn)行傳值,也可以不使用實(shí)參進(jìn)行傳值,不使用實(shí)參進(jìn)行傳值時(shí),使用默認(rèn)值作為其值
2、帶有及不帶默認(rèn)值的關(guān)鍵字形參
實(shí)例中 * 以后的參數(shù)都是關(guān)鍵字形參,在使用關(guān)鍵字形參時(shí),必須使用關(guān)鍵字實(shí)參進(jìn)行傳值,不使用會(huì)報(bào)錯(cuò)
不帶默認(rèn)值的關(guān)鍵字形參:不帶有默認(rèn)值的關(guān)鍵字形參必須使用關(guān)鍵字實(shí)參進(jìn)行傳值,如果不傳參數(shù)就會(huì)報(bào)錯(cuò)
帶有默認(rèn)值的關(guān)鍵字形參:帶有默認(rèn)值的關(guān)鍵字形參可以用關(guān)鍵字實(shí)參進(jìn)行傳值,也可以不傳值,不傳值時(shí)使用默認(rèn)值作為其值。
3、可變長(zhǎng)度的形參:
可變長(zhǎng)度位置形參:
- 其位置在位置形參及關(guān)鍵字形參之間,當(dāng)傳入的位置實(shí)參數(shù)量多于位置形參時(shí),多出部分的位置形參會(huì)全部存儲(chǔ)在可變長(zhǎng)度的位置形參中
- 可變長(zhǎng)度的關(guān)鍵字形參就是例子中的 * ,只是給這個(gè)形參添加了一個(gè)名字,這個(gè)名字可以自定義,但是約定俗成的命名為 *args
可變長(zhǎng)度的關(guān)鍵字形參:
- 可變長(zhǎng)度的關(guān)鍵字形參位于參數(shù)列表的末尾,當(dāng)傳入的關(guān)鍵字實(shí)參多與關(guān)鍵字形參時(shí),多出的部分就會(huì)被儲(chǔ)存在可變長(zhǎng)度的關(guān)鍵字形參中,以元組進(jìn)行存儲(chǔ)
- 可變長(zhǎng)度的關(guān)鍵字形參使用 ** 進(jìn)行表示,此時(shí)也需要給關(guān)鍵字形參添加一個(gè)名字,這個(gè)名字可以自定義,但是約定俗成的稱(chēng)為 **kwargs,以字典進(jìn)行存儲(chǔ)
形參聲明時(shí),其聲明順序是有規(guī)定的,順序?yàn)椋?/p>
無(wú)默認(rèn)值位置形參 --> 有關(guān)鍵字位置形參 --> 可變長(zhǎng)度的位置形參 --> 無(wú)默認(rèn)值的關(guān)鍵字形參 --> 有默認(rèn)值的關(guān)鍵字形參 --> 可變長(zhǎng)度的關(guān)鍵字形參
常用的參數(shù)列表類(lèi)型:
-- (*args,**kwargs)
-- (a,*args)
-- (a,b=10,**kwargs)
-- (a,*,b,**kwargs)
-- (a,*args,b,**kwargs)
在使用形參時(shí)要按照位置進(jìn)行傳參,即使是有關(guān)鍵字也要盡量按照位置進(jìn)行傳參,這樣更加清晰
打散機(jī)制
在使用可變長(zhǎng)形參時(shí),當(dāng)傳入的值多余需要的值時(shí)會(huì)把多余的參數(shù)放進(jìn)可變長(zhǎng)位置形參 及 可變長(zhǎng)關(guān)鍵字形參,但是如果直接傳入一個(gè)元組及字典中如何直接將其變?yōu)樵M及字典呢?
此時(shí)需要使用 *
及 **
的打散機(jī)制*
單列容器 會(huì)打散單列容器
**
雙列容器 會(huì)打散雙列容器
print(*(a,b,c)) --- > (a b c)
print(**{a:1,b:2}) --- > {a:1,b:2}
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4277瀏覽量
62323 -
python
+關(guān)注
關(guān)注
55文章
4767瀏覽量
84375
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論