在Python中,函数的参数有四种类型:必备参数、关键字参数、默认参数、不定长参数。
必备参数
最简单的传参方式,在其他语言中也比较常见。
例如:
def add(x, y):
return x + y
add(10, 20)
此时,形参为x和y。而10和20作为实参传入函数add中。
在调用函数时,实参和形参的数量要相等。
关键字参数
Python中还可以用关键字的形式传递参数。
同时,参数还可以通过指定关键字名称的方式传递:
def add(x, y):
return x + y
add(y=10, x=20) # 结果为30
默认参数
即如果没有为参数传递一个值,则使用默认的值。
def add(x, y=0):
return x + y
add(10) # 结果为10
add(10, y=20) # 结果为30
在此函数调用中,需要为x传入一个值。
而对于y,如果选择不传入,则y默认为0。如果传入,则需要以参数名=值
的形式设置y的值。
不定长参数
如果传入参数的数量不确定,可以使用如下格式:
def add(x, *y):
result = x
for i in y:
result += i
return result
add(10, 20) # 结果为30
add(10, 20, 30) # 结果为60
# 将列表中的所有元素作为参数传递
add(10, *[20, 30]) # 结果为60
# 将元组中的所有元素作为参数传递
add(10, *(20, 30)) # 结果为60
此时,x作为形参必须设置一个值。而y则相当于是一个列表或元组,其中可以包含多个值,其数量取决于在调用函数时传入的参数数量。
不定长参数还有关键字形式的传入方式:
def add(x, **y):
result = x
for key,value in y.items():
print('key-value:', key + '-' + str(value))
result += value
return result
add(1, a=1, b=2)
add(1, **{'a':1, 'b':2, 'c':3})
此时y作为形参,前面有两个星号,表示传入的参数为字典格式,每个参数都是一个key-value
的键值对。
参数组合
当同时具备必备参数、关键字参数、默认参数、不定长参数时,四种参数必须按序排列:
def add(a, b=2, *c, **d):
"""snip"""