前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实参与形参究竟有什么不同

实参与形参究竟有什么不同

原创
作者头像
用户8639654
修改2021-07-22 14:25:32
1.3K0
修改2021-07-22 14:25:32
举报
文章被收录于专栏:云计算运维

你所熟知的各种编程语言,都有形参与实参这个概念,虽然不同语言对于形参和实参的要求是不同的,但他们存在的形式与意义却是一致的。

对于许多初学者来说,形参与实参,着实难以区分和理解,这不怪你,因为计算机里的很多概念,的确是难以理解。我们对于日常生活中许多事物的理解,已经让我们养成了思维上的习惯与定式,而这种定式放在计算机编程上,往往是失效的。原因在于,计算机里的许多概念,都是没有实体的。

比如说,内存,你不能指着某样东西说“看,这是内存”, 充其量,你拆开电脑,指着一块硬件说“看,这是内存条”,然尔内存与内存条是两个完全不同的事物。所以,我们要放弃自然科学中那种对事物进行精确定义和描述的习惯。

看下面这段代码

代码语言:javascript
复制
def add(x, y):
    return x + y

x, y ,就是函数add的形参,形参这个概念,侧重于函数的定义,这段代码里,没有实参,因为实参侧重于函数的调用,看下面这段代码

代码语言:javascript
复制
def add(x, y):
    return x + y
​
add(3, 4)

3 和 4 就是调用函数add时传入的实参,这句话强调了调用函数和传入两个动作,只有当这两个动作发生时,才有实参的概念,或者说,实参的概念才有意义。

那么,return x + y 这行代码里,x 与 y 是实参,还是形参呢? 我个人的见解是,在函数里再去辨别他们已经没什么意义,如果一定需要一个答案,那么,我认为它们是形参,而不是实参。实参,是一个只在函数调用时存在的概念,具体到函数内部执行时,我们已经不关心实参这个事情了。

如果你对变量作用域理解的不深刻,那么下面这段代码很容易让你困惑

代码语言:javascript
复制
x = 3
y = 4
​
def add(x, y):
    return x + y
​
add(x, y)

现在再来看,return x + y 这行代码里,x y 到底是实参还是形参?答案是形参。实参,不是一个具体的事物,它是一个概念,这个概念只在调用函数传入参数时才有意义。

为什么要有形参和实参这两个概念呢?形参,规定了函数的样式,是一种形式的约定,强类型语言还会约定一个形参的类型。实参,是实际调用时传入函数的数据,因此叫实参。

实参与形参,是两个维度的事物,一个强调形式,一个强调实际数值,因此我说,他们是两个维度的事物,形参是静态的概念,实参是动态的概念,我执行add(3, 5), 函数的实参就是3, 5。下一次执行add(7, 8),那么函数的实参就是7和8,但形参始终都是x和y。

在函数内,形参的值,是由实参决定的,在函数执行之前,你不知道x 和 y 的值是什么,只有函数实际被执行,被调用,在函数内,你才知道形参的实际数值是什么。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档