1.普通参数def ada(x,y) def add (×=4,y=5)
既可以接收位置传参又可以接收关键字传参的形参。
2.可变位管参数 def total (*args)
args会收集0个或任意个实参,收集成一个不可变的元组 *args *修饰的形参表示可变参数,为它可以提供若下个 剩余的
按位貴传参的实参,会被形参收集成元组,元组不可变
*args 称为 可变位置形参
可变参数本来就可以使用0个实参,所以不需要缺省值
3.可变关键字形参 def fn (**kwargs) keyword arguments
**是修饰符,修饰后面的标识符,习惯上使用kwargs
只能收集剩余的关键字实参
标识符可以是由字母、数字、组成就可以了,但是不能数字开头
4.keyword only 仅关键字形参
*args,之后出现的非可变形参
*, 出现的标识符一般都是keyword-only。除了**kwargs
5. positional-only 仅位置形参 3.8+
目前很少使用, 只有个别函数声明使用了
实参传参:
(1)按照位置
(2)关键字
可以混合使用,位置传参必须在关键字传参之前
参数解构只能用在函数调用时的那个括号中。
解开成 按位置传参
- 在给函数提供实参的时候,可以在可迭代对象前使用 * 或者 ** 来进行结构的解构,提取出其中所有元素作为函数的实参
- 使用 * 解构成位置传参
- 使用 ** 解构成关键字传参
- 提取出来的元素数目要和参数的要求匹配