形參的分類
形參的分類可以分為六種:
- 帶有默認值的位置形參
- 不帶默認值的位置形參
- 帶有默認值的關鍵字形參
- 不帶默認值的關鍵字形參
- 可變長度的位置形參
- 可變長度的關鍵字形參
實例:
def fn(a,b,c=10,*,d,e=20,**kwargs)
1、帶及不帶默認值的位置形參
實例中,在 * 號之前統稱為位置形參,位置形參可以由位置實參及關鍵字實參進行傳值。
不帶默認值的位置形參:不帶有默認值的位置形參必須要實參進行傳值,如果實參不傳值就會報錯
帶有默認值的位置形參:帶有默認值的關鍵字位置實參可以用實參進行傳值,也可以不使用實參進行傳值,不使用實參進行傳值時,使用默認值作為其值
2、帶有及不帶默認值的關鍵字形參
實例中 * 以后的參數都是關鍵字形參,在使用關鍵字形參時,必須使用關鍵字實參進行傳值,不使用會報錯
不帶默認值的關鍵字形參:不帶有默認值的關鍵字形參必須使用關鍵字實參進行傳值,如果不傳參數就會報錯
帶有默認值的關鍵字形參:帶有默認值的關鍵字形參可以用關鍵字實參進行傳值,也可以不傳值,不傳值時使用默認值作為其值。
3、可變長度的形參:
可變長度位置形參:
- 其位置在位置形參及關鍵字形參之間,當傳入的位置實參數量多于位置形參時,多出部分的位置形參會全部存儲在可變長度的位置形參中
- 可變長度的關鍵字形參就是例子中的 * ,只是給這個形參添加了一個名字,這個名字可以自定義,但是約定俗成的命名為 *args
可變長度的關鍵字形參:
- 可變長度的關鍵字形參位于參數列表的末尾,當傳入的關鍵字實參多與關鍵字形參時,多出的部分就會被儲存在可變長度的關鍵字形參中,以元組進行存儲
- 可變長度的關鍵字形參使用 ** 進行表示,此時也需要給關鍵字形參添加一個名字,這個名字可以自定義,但是約定俗成的稱為 **kwargs,以字典進行存儲
形參聲明時,其聲明順序是有規定的,順序為:
無默認值位置形參 --> 有關鍵字位置形參 --> 可變長度的位置形參 --> 無默認值的關鍵字形參 --> 有默認值的關鍵字形參 --> 可變長度的關鍵字形參
常用的參數列表類型:
-- (*args,**kwargs)
-- (a,*args)
-- (a,b=10,**kwargs)
-- (a,*,b,**kwargs)
-- (a,*args,b,**kwargs)
在使用形參時要按照位置進行傳參,即使是有關鍵字也要盡量按照位置進行傳參,這樣更加清晰
打散機制
在使用可變長形參時,當傳入的值多余需要的值時會把多余的參數放進可變長位置形參 及 可變長關鍵字形參,但是如果直接傳入一個元組及字典中如何直接將其變為元組及字典呢?
此時需要使用 *
及 **
的打散機制*
單列容器 會打散單列容器
**
雙列容器 會打散雙列容器
print(*(a,b,c)) --- > (a b c)
print(**{a:1,b:2}) --- > {a:1,b:2}
-
函數
+關注
關注
3文章
4306瀏覽量
62431 -
python
+關注
關注
56文章
4782瀏覽量
84453
發布評論請先 登錄
相關推薦
評論