04-02、函数的参数
一、函数参数的两大分类
形参和实参
形参的表现形式就一种
实参的表现形式有多种
1、形式参数
在函数定义阶段从左往右依次写入的变量名就叫形式参数,简称"形参"

2、实际参数
在函数调用阶段从左往右依次写入的变量值就叫实际参数,简称"实参"

二、位置参数
1、位置参数
从左往右依次写入的数据就是位置参数
1、位置形参
在定义函数的时候,从左往右依次写入的变量名就是位置形参
2、位置实参
在函数调用阶段,从左往右依次写入的变量值就是位置实参
3、注意:
对应关系:位置形参从左往右依次传递给位置形参,并且一一对应
位置参数或多或少都会报错

2、关键字参数
1、定义
通过 形参名 = 变量名 的形式传递的是关键字参数
2、注意
关键字参数必须放在位置参数后面,否则报错(语法错误)

三、默认参数
1、定义
在函数定义阶段,两种情况:
1. 如果没有给形参传递值,就使用默认的
2. 如果给形参传递了值,就使用已经传递的
2、易错练习
易错1
默认参数一般是不可变类型
但如果默认参数有可变类型(eg:列表类型),函数值会受其他数据影响

解决方式
定义参数为None类型

习题2
默认形参的值在定义阶段就已经赋值完毕
所以默认形参的值不受接下来相同变量名赋值的影响

四、可变长参数
可变长参数指的是在调用函数时,传入的实参个数不固定,对应着必须要有特殊形式的形参来接收溢出的实参
1、*号和**号在形参中的使用
1、*在形参中的使用
形参中使用,用于接收多余的位置实参,把多余的实参赋给*号后面的变量名,并以元组形式保存下来
保证无论在函数调用阶段传递多少个位置实参都可以

2、**在形参中使用
形参中使用,用于接收多余的关键字实参,把多余的实参赋给**号后面的变量名,并以字典形式保存下来
保证无论在函数调用阶段传递多少个关键字实参都可以

3、*args 和 **kwargs 组合在形参中使用
形参中使用,用于接收多余的位置实参和关键字实参,把多余的实参赋给**号后面的变量名,并以元组或字典形式保存下来
保证无论在函数调用阶段传递多少个位置实参和关键字实参都可以
注意:
1.默认参数只要不放在**后面都可以
2.*号后面和**号后面的变量名可以任意命名,但是,在python中推荐使用
*args => arguments参数
**kwargs => keyword arguments关键字参数
3、在*号和**号之间的为关键字形参

2、*号和**号在实参中的使用
1、*号在实参中的使用
是一种打散行为,将紧跟其后的值打散为位置实参

2、**号在实参中的使用
是一种打散行为,将紧跟其后的值打散为关键字实参


浙公网安备 33010602011771号