有的时候我们可能想要定义一个可以接收任何数量的参数的函数,也就是说:variable number of arguments(可变数量的参数),这时候可以用*(星号)实现。
所以使用*args和**kwargs并不是必须的。只有*(星号)是必须的。你也可以写成*var和**vars。使用*args和**kwargs只是一种传统。
让我们先来看看*args吧。*args和**kwargs大多数时候被用在函数的声明中。*args和**kwargs允许你向函数传递可变数量的参数。也就是说当你不确定将会向函数传递多少个参数的时候你就可以使用这两个参数。*args被用来传递一个不确定长度的、非KV式(key-value/键值对)的参数列表。
**kwargs允许你传递一个不确定长度的、KV式的参数给函数。如果你想在函数中处理这样的参数,你应该使用**kwargs。
通俗来讲,*args传递的是数组或元组,**kwargs就是当你传入key=value是存储的字典。
例子:
意思就是1还是参数a的值,args表示剩余的值,kwargs在args之后表示成对键值对。