1. ’ * ’ 的作用
输入参数为1, 2, 3
,最后返回的结果是一个元组 (1, 2, 3)
。
- 用在可迭代对象前,进行自动解包转化为多个单变量参数
输入参数为一个列表[1, 2, 3]
,解释器自动进行解包然后分别传递给3个变量。
2. ’ ** ’ 的作用
- 用在动态参数前,打包多个赋值形式的参数并将其转化为字典
函数接收类似于关键参数一样赋值形式的多个实参,并返回一个字典。
- 用在字典前,解包字典中的数据项作为键值参数传给函数
3. 参数类型
所有参数的顺序必须一一对应,且数量一致。
函数调用通过键值对形式加以指定。关键字参数之间不存在先后顺序;有位置参数时,位置参数必须在关键字参数的前面。
为参数提供默认值,调用函数时可传可不传。所有位置参数必须放在默认参数前面。
4. ’ *args ’ 与 ’ **kwargs ’
定义函数时,如果不确定调用的时候会传递多少个参数,可以打包位置参数或者关键字参数来进行参数传递。
注意:*
和**
只有在传参时才有用。
5. 参数混合使用
函数定义和调用时的参数类型必须一致;位置参数放在*args
参数前,*args
参数放在**kwargs
参数前,**kwargs
参数放在最后。