一、引入:
定义一个函数,我们会给函数设置参数。参数有实参、形参。
在使用函数时,可以按照有默认参数、位置参数,指定参数的方式去传递往形参里传递实参,这些都是在函数参数固定时使用。
当函数的输入是不确定的个数,这时我们就可以用*args和**kwargs,来接收这部分参数。
二、区别
|
*args
|
**kwargs
|
不确定部分,通过该形参会转变成什么格式的数据。
|
元组()
|
字典{}
|
举例
|
def foo(x,y,*args)
print(x,y)
print(args)
foo(1,2,3,4,5)
1,2
(3,4,5)
|
def foo(x,y,**kwargs)
print(x,y)
print(kwargs)
foo(1,2,a=3,b=4,c=5)
1,2
{'a':3,'b':4,'c:5'}
|
特殊情况
|
若输入时就是列表,字符串、元组或集合等的形式,可在数据前加上*,来打散数据。
foo(1,2,*[3,4,5])
(3,4,5)
|
若输入时就是字典的形式,可在数据前加上**,来打散数据。
foo(1,2,**{'a':3,'b':4,'c:5'})
{'a':3,'b':4,'c:5'}
|
|
三、注意事项
可变参数*args和**kwargs可以组合使用。
可变参数必须放在固定形参的后边。