在学习函数参数定义的时候,经常会遇到这两个参数,在这里归纳总结一下对这两个参数的学习
*args表示任何多个无名参数,它是一个tuple
**kwargs表示关键字参数,它是一个dict
然后通过代码实际去操作:
首先是args,定义一个测试args的函数
def myargs(x,*args):
print(x)
print(args)
print(type(args))
myargs(1,2,2)
输出结果为
可以看到,除了第一个参数保存到x中以外,其余多余的参数保存到了‘args’中,并且他的类型为元组tuple
然后测试kwargs,也是一样定义一个测试函数
def mykwargs(x,**kwargs):
print(x)
print(kwargs)
print(type(kwargs))
mykwargs(1,a=2,c=3,d=6)
运行结果
可以看到,除了第一个参数保存到x中以外,其余多余的参数保存到了‘kwargs’中,并且他的类型为字典dict
最后,测试一下两者的组合情况
def myargs_kwargs(x,*args,**kwargs):
print('x is ', x)
print('args is ',args)
print('kwargs is ', kwargs)
myargs_kwargs(1, 2, 3, 4, a=2, c=3, d=3)
运行结果:
可以看到,第一个参数保存到x中,中间的参数保存到args元组中,最后的赋值参数保存到kwargs字典中。
NOTE:当你参数不匹配的时候,比如,在第三个测试函数中,传入参数与预期不匹配,程序会自动报错,提示删除多余参数