什么是形参什么是实参:快速区分
什么是形参什么是实参,形参写在函数定义的括号内,只负责占位、接收传入的数据,本身没有初始值;实参写在函数调用的括号内,是你真正传递进去的变量、字面量或表达式,调用时实参会把值拷贝或引用传递给对应位置的形参,该规则适用于Python、Java、C语言等主流编程语言,在使用传值调用时形参修改不会反向影响实参,使用引用传递时形参改动会同步作用于实参。
形参的定义与使用规则
形参全称形式参数,仅存在于函数定义阶段,作用域被限制在函数内部,函数执行结束后形参直接销毁,外部代码无法访问。你可以给形参设置默认值,调用函数时如果省略对应位置的实参,程序就会自动读取这个预设的值,多个形参之间用逗号隔开,顺序会和实参一一匹配。
形参不占用独立内存,直到函数被调用、接收实参传递的值之后,才会分配对应的内存空间。
实参的定义与使用规则
实参全称实际参数,是函数发起调用时传入的具体内容,它可以是数字、字符串这类字面常量,也可以是已经提前声明赋值的变量,还可以是能产出结果的运算表达式。实参在传入函数之前就已经分配内存,生命周期不受函数运行状态约束,函数结束之后实参依旧保留在外部作用域。
实参传递分为位置传参、关键字传参两种常用方式,位置传参依靠顺序匹配,关键字传参依靠形参名称匹配,关键字传参不用严格遵守定义顺序。
| 对比维度 | 形参 | 实参 |
|---|---|---|
| 出现位置 | 函数定义 | 函数调用 |
| 是否有真实数据 | 初始无数据,等待接收 | 自带确定的值 |
| 内存创建时机 | 调用函数时 | 调用之前 |
传值调用模式下,形参拿到的只是实参的值副本,在函数内部修改形参,外部的实参不会发生变化,C语言基础类型、Python数字字符串都属于这类情况。
引用传递模式下,形参接收的是实参的内存地址,二者指向同一块数据,修改形参里的内容,外部实参同步变化,Python列表、字典等可变对象符合这个特征。
判断二者最简单的办法,看代码是def定义函数还是调用函数。
该区分逻辑不适用于宏定义,宏预处理阶段没有参数传递的内存拷贝过程,文本替换不会区分形参与实参。
想要了解更多关于什么是形参什么是实参的文章欢迎访问:百科
