一、引入:
定义一个函数,我们会给函数设置参数。参数有实参、形参。
在使用函数时,可以按照有默认参数、位置参数,指定参数的方式去传递往形参里传递实参,这些都是在函数参数固定时使用。
当函数的输入是不确定的个数,这时我们就可以用*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可以组合使用。
可变参数必须放在固定形参的后边。