一、函数入参带双星号
首先先看一个例子:
def fun(a=None, b=None, **kwarg):
print(a)
print(b)
if 'c' in kwarg:
print(kwarg['c'])
上述例子所定义的函数中有一个入参是“**”为前缀的形式,“**kwarg”代表此函数可以有更多不确定的入参,并且在函数体中用“kwarg”变量来操作这些额外入参(“kwarg”是dict的格式,额外的入参名字作为kwarg的key,key对应的value为入参的值)。
这样的函数有以下几种调用方式:
"""
只对a、b赋值,且无需写明变量名:
"""
fun(2,3)
fun(2,3,4)
"""
写明变量名
"""
fun(a=2, b=3)
fun(a=2, b=3, c=4)
二、调用函数时传参带有双星号
利用带有双星号的传参,也可以正确调用上文的函数:
"""
利用dict传参
"""
input = {'a'=2, 'b'=3, 'c'=4}
fun(**input)
根据此例我们可以看到,如果要用双星号,则input需要是一个dict的格式,并且input中的key必须包含函数所有明确的入参名,若有其他的key,则都算在函数的入参kwarg中。
|