如果我們想要在調用函數時,少輸入一些變量。我們可以在定義函數值,輸入一些默認的參數值:
defadd(a,b=2,c=3):
returna+b+c
print(add(2))
output:7
1
2
3
4
1
2
3
4
add函數有3個變量,那么我們在定義它的時候,后倆個變量被我們賦予了默認參數值分別是2和3。若沒有在調用時,明確給出后倆個變量的參數值,那么python會自動調用默認參數值。
合法調用方式:
add(2),add(2,3),add(2,4,5)
非法定義方式:
defadd(a,b=2,c):
returna+b+c
1
2
3
4
5
1
2
3
4
5
但是要注意,當你定義了第一個變量的默認參數值后,那么后面的變量必須全部都帶有默認參數值。
參數量可變的函數定義
在python中有一個?*?運算符,來實現可變參數的函數定義。
*的用法,列表的解包:
arg=[2,4]
foriinrange(*arg):
print(i)
字典的解包,直接為函數提供關鍵字以及參數:
d={'a':1,'b':2,'c':3}
defadd(a,b,c):
returna+b+c
print(add(**d))
output:6
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
當存在一個形式為**name的最后一個形參時,它會接收一個字典,其中包含除了與已有形參相對應的關鍵字參數以外的所有關鍵字參數。這可以與一個形式為*name,接收一個包含除了與已有形參列表以外的位置參數的元組的形參組合使用(*name必須出現在**name之前。)例如,如果我們這樣定義一個函數:
defcheeseshop(kind,*arguments,**keywords):
print("--Doyouhaveany",kind,"?")
print("--I'msorry,we'realloutof",kind)
forarginarguments:
print(arg)
print("-"*40)
forkwinkeywords:
print(kw,":",keywords[kw])
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
我們可以這樣去調用它:
cheeseshop("Limburger","It'sveryrunny,sir.",
"It'sreallyvery,VERYrunny,sir.",
shopkeeper="MichaelPalin",
client="JohnCleese",
sketch="CheeseShopSketch")
1
2
3
4
5
1
2
3
4