不定长参数一:*args将实参中剩余的值都传递给变量args剩余的值在args中,以元组的形式保存
如图,test函数中的3,4将会以一个元组的形式传递给args,具体表现看输出结果第三行元组(3,4),那么函数中的*args中的星号代表什么呢?就是表示对元组进行拆包。具体表现看输出结果第四行。
不定长参数二:**kwargs没有变量名的参数,以args元组的形式保存有变量名的参数,以kwargs字典形式进行保存
如图,test函数中的name,age将以字典的形式传递给kwargs,两个星号表示对字典拆包,程序中直接对kwargs值进行打印,可以看到kwargs是一个字典。
拆包
弄懂了*args和**kwargs我们就知道了什么是拆包
* 可以对 元祖 进行拆包** 可以对 字典 进行拆包注意事项
上述两个例子中,test函数的实参分别是(1,2,3,4)和(1,2,name='f',age=18)。
那么我们直接传递一个元组是否可行呢。
我们发现元组(3,4)被当成一个元素了。如果我们想将元组内的元素分开传递,我们可以对元组进行拆包。
也就是说我们的实参必须是拆包后再进行传递。**kwargs也是一样