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、**号在实参中的使用
是一种打散行为,将紧跟其后的值打散为关键字实参
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通