在Python中的代码中经常会见到这两个词 args 和 kwargs,前面通常还会加上一个或者两个星号。其实这只是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。这其实就是 Python 中可变参数的两种形式,并且 *args 必须放在 **kwargs 的前面,因为位置参数在关键字参数的前面。
*args 不定参数(不定的意思是指,预先并不知道,函数使用者会传递多少个参数给你)
*args 是用来发送一个非键值对的可变数量的参数列表给一个函数。
*args 的用法:当传入的参数个数未知,且不需要知道参数名称时。
def test_args(first,*args):print("required argument: ",first)print(type(args))for v in args:print('optional argument: ',v)test_args(1,2,3,4,5)
输出结果:
**kwargs
而**kwargs则是将一个可变的关键字参数的字典传给函数实参,同样参数列表长度可以为0或为其他值。下面这段代码演示了如何使用kwargs
def test_kwargs(first,**kwargs):print("required argument: ",first)print(type(kwargs))for k,v in kwargs.items():print('optional argument: ',k,":",v)
test_kwargs(1,a=2,b=3,c=4)