形参是函数定义时的参数,实参是调用函数时传入的值。
用三岁孩子能听懂的比喻来解释函数定义中的形参和实参
想象你有一个"玩具工厂":
1. 函数 = 玩具工厂的生产线
2. 形参 = 工厂的"配方表"上写的材料名称
3. 实参 = 实际放进工厂的材料
玩具工厂的故事:
小明的玩具工厂:
工厂门口贴着一张配方表:"做小汽车需要:轮胎、车身、颜色"
这个配方表就是形参,是工厂的"规则"
现在来制作小汽车:
小明说:"我要做小汽车!"
小明从仓库里拿出:4个轮胎、1个车身、红色油漆
这些实际的材料就是实参,是小明给工厂的"原料"
工厂怎么工作:
工厂看到配方表说:"我需要4个轮胎、1个车身、红色油漆"
工厂把材料放进去,做出一辆红色小汽车
这个过程就是函数的执行
存在的问题:
"为什么配方表和实际材料不一样?""配方表上的东西,工厂怎么知道用哪个?""如果我放错了材料怎么办?"
答案:
配方表是"规则",实际材料是"原料"工厂按顺序把原料放进配方表对应的格子里如果放错,就做不出正确的玩具
最简单的比喻:
函数 = 做饭的菜谱
形参 = 菜谱上写的"盐"、"糖"、"醋"
实参 = 你实际放的"盐"、"糖"、"醋"的量
完整的流程:
1. 你写好菜谱(定义函数)
2. 你告诉菜谱要放什么(调用函数时传入实参)
3. 菜谱告诉你怎么做(函数体)
4. 最后你得到菜(返回值)
# 调用函数时传入实际材料(实参)
简单总结:
形参 = 菜谱上写的材料名称(规则)
实参 = 你实际放的材料(原料)
函数定义 = 写菜谱
函数调用 = 按菜谱做菜
# 参数
## 位置参数
### 位置形参
位置形参是在定义函数的时候()内的参数
位置形参必须传值,不能多传也不能少传否则就会报错
### 位置实参
位置实参是在函数调用阶段在函数的()内从左往右和形参一一对应一次传入的值
## 关键字参数(关键字实参)
关键字参数是可以不按照顺序进行传递参数的,按照key=value的方式传递值,这里需要值得注意的一点事key的名字必须是和函数的定义阶段的位置参数名称一致
**位置实参和关键字参数是可以一起混用的但是一定要将位置实参放置在关键字参数的前面**
## 默认参数(默认形参)
在函数的定义阶段为位置形参进行参数赋值那么这个参数就是默认形参
**值得注意的是默认参数还是可以进行混用的但是一定需要将默认参数放置在位置形参之前**