问题

通俗地讲为何要有返回值?

回答
想象一下,你不是在写程序,而是在跟一个非常听话但有点固执的助手说话。你给他下达一个任务,比如“帮我找找那本红色的书”,然后你就傻傻地站在那儿等着。助手吭哧吭哧地去找了,找到了就放在你面前。这时候,你并没有得到任何信息说“我找到了,在这儿”。你只是看到书在你面前了。

这就像在某些编程场景下,你让程序做一件事,它做了,但它不告诉你“我做完了,而且是这样的结果”。有时候这没问题,比如让灯亮起来。但很多时候,你就是需要知道“怎么样了”。

为什么要有返回值?简单来说,就是为了“告诉”你事情的结果,或者为你“提供”完成任务后产生的东西。

我们来拆解一下,为什么这很重要,并且可以从不同角度理解:

1. 告诉“我”怎么样了:状态反馈

最基础的,你派助手去做一件事,总得知道他有没有成功吧?

场景: 你让助手去拧一个螺丝。他拧好了,你就得知道螺丝拧紧了。如果螺丝滑牙了他没拧紧,你也得知道。
返回值的作用: 在编程里,这就像是告诉“调用者”(就是你,或者程序的其他部分)这个任务执行的结果。可能是“成功了”(通常用数字0或者一个特殊的标记表示),也可能是“失败了”(比如一个错误码,告诉你哪个环节出了问题)。
例子: 想象你写一个函数叫做 `拧螺丝`。如果拧成功了,它可能返回 `true`(表示成功);如果螺丝孔坏了拧不了,它可能返回 `false`(表示失败),甚至可以返回一个错误信息说“螺丝孔损坏”。如果没有返回值,你怎么知道螺丝到底拧好了没有?你只能看到螺丝好像动了动,但谁知道是不是真的拧牢了?

2. 给我“你找到的那个东西”:数据的传递

很多时候,你让助手做事,不是让他只做个姿态,而是要他给你一个东西。

场景: 你让助手去图书馆,找到一本叫做《宇宙的奥秘》的书,然后把它拿给你。你不是只要他“去了”或者“找到了”,你是要那本书本身。
返回值的作用: 在编程里,函数经常需要根据某种计算、查找或处理,产生一个结果。这个结果就需要通过返回值传递给你。
例子: 你有一个函数叫做 `计算两个数的和`。你输入 `5` 和 `3`,你期望的不是它告诉你“我算完了”,而是直接得到 `8`。这个 `8` 就是函数的返回值。如果你没有返回值,你调用这个函数就像往一个黑洞里丢数字,完全不知道结果是什么。
```python
def 加法(a, b):
结果 = a + b
如果没有下一行,我们就不知道结果是什么了
return 结果

我的总数 = 加法(5, 3) 这里,加法函数执行后,'8' 会被赋值给 我的总数
print(我的总数) 输出 8
```
如果没有 `return 结果`,`加法(5, 3)` 执行后什么也不会留下,`我的总数` 就得不到 `8`。

3. 承上启下,让流程更顺畅:连接与组合

程序是由很多小的“任务”或“步骤”组成的。返回值就像是这些步骤之间的“信使”或者“链条”。

场景: 你让助手先去厨房找一把刀,然后把找到的刀给你。你再拿着这把刀,去花园里砍柴。
第一个任务:“找刀”。助手找到刀,并且把刀递给你(这就是返回值)。
第二个任务:“砍柴”。你拿到刀后,才能去砍柴。
返回值的作用: 它使得一个函数的输出,可以成为另一个函数或另一个操作的输入。这样,你可以把复杂的任务分解成一个个小函数,然后像搭积木一样把它们组合起来。
例子: 假设你有一个函数 `获取用户名`,它返回一个用户的名字字符串。你还有一个函数 `发送欢迎消息`,它需要一个用户名作为参数。
```python
def 获取用户名():
假设从数据库或者用户输入中获取
return "张三"

def 发送欢迎消息(name):
print(f"你好,{name}!欢迎来到我们的社区。")

用户名字 = 获取用户名() '张三' 被返回并赋值给 用户名字
发送欢迎消息(用户名字) 这里,'张三' 作为参数传递给 发送欢迎消息 函数
```
如果没有 `return`,`获取用户名` 函数执行完就什么也不剩,你也就没法把用户名传递给 `发送欢迎消息` 了。

4. 提升复用性与灵活性:让“工具”更有用

一个好的函数,不应该只做一次特定的事,然后就消失。它应该是一个可以被反复使用的“工具”。

场景: 你发明了一个测量长度的工具。你用它量了一次桌子,结果是 1.2 米。下次你量椅子,又是 0.5 米。这个工具能够根据你测量不同的东西,每次都返回不同的长度值。
返回值的作用: 函数有了返回值,就成了一个独立的、有产出的“服务单元”。你可以在程序的任何地方,只要你需要这个服务(比如计算一个值,或者获取某个数据),就去调用它,并且得到你想要的结果。
例子: 一个 `计算圆的面积` 的函数。你输入半径 `r`,它返回计算出的面积。你想算不同半径的圆的面积,只需要调用这个函数几次,每次传入不同的 `r`,就能得到不同的面积结果。如果没有返回值,它就只能像个哑巴一样计算给你看,但你不知道算出来是多少。

总结一下,为什么要有返回值?

为了让你知道“我做好了,结果是这样”。 (状态反馈)
为了把“我辛辛苦苦算出来或者找来的东西”交给你。 (数据传递)
为了让我的产出能成为你下一步行动的依据,让整个流程顺畅地进行下去。 (连接与组合)
为了让我这个“小助手”能成为一个可以被反复调用、并且每次都能拿出不同成果的“有用工具”。 (复用性与灵活性)

想象一下没有返回值的世界:

你无法知道一个操作是否成功。
你无法获取任何计算或查找的结果。
程序中的各个部分无法将信息传递给彼此。
你写的所有代码都只能是独立的、一次性的动作,无法构建出更复杂的逻辑。

返回值,就是让程序能够进行有意义的“交互”和“沟通”的关键机制。它让你的程序不仅仅是执行一系列命令,而是能够完成有输入、有处理、有输出的真正意义上的“工作”。这使得我们的代码能够变得更加强大、灵活和高效。

网友意见

user avatar

紧张的数学考试中,你发现有一题没法口算,于是掏出早上刚买的计算器,按下

       √2 * sin(30)     

在你心满意足、大声地按下「=」键后,屏幕上变成了:

       计算中,请稍等……     

然后过了十秒钟,屏幕上变成了:

       计算完毕 :)     

???

我建议你还是把这个计算器扔了吧。

---

好了,现在题目里又补充了「用输出参数替代行不行」……

一样的考试,一样的计算了十秒钟后,但是屏幕上什么都没有显示。正在你纳闷的时候,只见计算器里伸出了一只还在滴着黏液的触手,一把卷住了你的右手,逼你在计算器键盘上按下了:

       0.70710678118     

卷着你的手打完最后一个字,触手就松开了,俏皮地朝你比了个心,慢慢缩回了计算器里。

???

我建议你还是把这个计算器供起来吧。

user avatar

对于无副作用的函数(纯函数)而言,这个问题显而易见的哔——,因为纯函数没有返回值那么调用的意义就没了。


对于有副作用的函数而言,通常这种程序设计语言都允许函数没有返回值,也就是说函数不一定要有返回值,甚至于给没有返回值的函数取了另一个名字叫做子过程。

类似的话题

  • 回答
    想象一下,你不是在写程序,而是在跟一个非常听话但有点固执的助手说话。你给他下达一个任务,比如“帮我找找那本红色的书”,然后你就傻傻地站在那儿等着。助手吭哧吭哧地去找了,找到了就放在你面前。这时候,你并没有得到任何信息说“我找到了,在这儿”。你只是看到书在你面前了。这就像在某些编程场景下,你让程序做一.............
  • 回答
    能斯特分配定律:探究物质在互不相溶溶剂中分配的奥秘你能否想象,当两种互不相溶的液体放在一起,一种物质会如何在这两种液体中“安家落户”? 这正是能斯特分配定律所要解答的迷人问题。这项基础性的化学定律,不仅揭示了物质在不同相中的行为,更在化学分析、萃取分离等领域发挥着至关重要的作用。今天,我们就来深入探.............
  • 回答
    .......
  • 回答
    这招“诱敌深入,聚而歼之”啊,在古代战场上那可是屡试不爽的致胜法宝,尤其是在兵力不足的情况下,更是能以弱胜强,让敌人吃尽苦头。要说它为什么这么管用,得从几个关键点上掰开了揉碎了说。1. 孙子兵法里的“势”与“形”:首先,我们得明白古代战争可不是简单的数字游戏。孙子兵法里就讲究“势”和“形”。“势”指.............
  • 回答
    好的,我们来聊聊“内生增长理论”,用大白话讲,它到底是怎么回事。想象一下,我们国家的经济就像一个在操场上跑步的孩子。这个孩子(经济)要跑得更快,跑得更远,变得更强壮。那么,是什么让他变得更强的呢?传统的想法:外部因素在起作用以前的人(经济学家)会觉得,孩子跑得快不快,主要看几个外部因素: 天赋(.............
  • 回答
    好,咱们来聊聊这“暗网”是个啥,还有为啥有人说它上面的视频“变态”。咱们争取说得明白透彻,就像跟街坊邻居唠嗑一样,保证听着不生硬,不像是个机器在那儿念叨。暗网是个啥玩意儿?用大白话说就是:想象一下咱们上网,大部分时间我们都是在“明网”上。就像你在街上逛街,能看到各种商店、餐馆、公园,大家都能看到,也.............
  • 回答
    好的,我们来试着用一个通俗易懂的方式,把傅立叶分析和小波分析这两个概念及其之间的关系讲清楚。想象一下,我们要分析一段音乐。 傅立叶分析:用“固定音调”的乐器来解析音乐 傅立叶分析的核心思想:把复杂的信号分解成一系列简单的“正弦波”傅立叶分析就像是一个非常有耐心的音乐家,他拿到一首复杂的交响乐(也就是.............
  • 回答
    好的,我们来用通俗易懂的方式详细解释一下混沌理论和分岔理论。想象一下,我们不是在讲复杂的数学公式,而是在观察生活中的一些有趣现象。 混沌理论(Chaos Theory):蝴蝶效应与不可预测的规律混沌理论,听起来有点玄乎,但它的核心思想其实很简单:在一个看似混乱的系统里,可能隐藏着一种非常敏感且有规律.............
  • 回答
    好的,我们来通俗易懂地解释一下数学的这三大哲学基础流派:逻辑主义、形式主义和直觉主义。你可以把它们想象成三位数学大师,他们各自对“数学到底是什么?”以及“我们如何确信数学是真的?”这两个终极问题有不同的看法和解答方式。为了方便理解,我们先来打个比方:想象一下我们要建造一座宏伟的“数学城堡”。 1. .............
  • 回答
    好的,我们来通俗易懂地讲解一下 Viterbi 算法,尽量详细一些。想象一下,你正在玩一个游戏,这个游戏叫做“猜天气”。游戏的规则是这样的:1. 两个状态: 每天的天气只有两种可能:晴天(Sunny) 和 下雨(Rainy)。2. 两个动作: 每天你可以选择做两件事情:出去玩(Go out) 或.............
  • 回答
    战胜癌魔的新篇章:通俗理解癌症免疫疗法及其重大意义想象一下,我们身体里有一支英勇的军队——免疫系统。这支军队日夜巡逻,识别并消灭入侵的细菌、病毒,以及体内那些不按常理出牌、不断增殖的癌细胞。然而,癌细胞就像狡猾的叛徒,它们学会了伪装,甚至能够悄悄地潜伏在免疫系统的眼皮底下,逃避追捕。2018年的诺贝.............
  • 回答
    好的,我们来用通俗易懂的方式,好好聊聊2018年诺贝尔化学奖的“定向进化”技术,以及它在我们生活中的实际应用。首先,我们得知道这个奖项为什么这么重要。这个奖项颁给了三位科学家:Frances H. Arnold、George P. Smith 和 Sir Gregory P. Winter。他们最重.............
  • 回答
    想象一下,咱们平时打交道的东西,有些是很简单的,有些就稍微复杂点。张量,就像是数学里的一个万能工具箱,能把这些不同复杂程度的东西都统一起来说。咱们一步一步来拆解,别急哈。第一步:从最简单的开始——标量 (Scalar)你手里拿个苹果,就一个苹果,对吧?这就算是个标量。它只有一个数字就能完全描述它。比.............
  • 回答
    好的,让我们来通俗易懂地理解一下2017年诺贝尔化学奖授予的“冷冻电镜”技术,以及它对我们生活产生的重大影响。 什么是冷冻电镜?—— 像给分子拍 X 光片,但更清楚!想象一下,你想知道一个非常非常小的东西,比如蛋白质,长什么样子。我们平时用显微镜可以看到一些形状,但如果想看到它最细微的结构,比如它内.............
  • 回答
    想象一下,我们的身体就像一个庞大的城市,而细胞就是这个城市里辛勤工作的市民。这些市民需要氧气才能生存和工作,就像城市需要电力一样。但是,就像城市里的电力供应可能会时有时无,有时候充裕,有时候又很紧张,我们身体里的细胞也需要一种机制来感知和应对氧气浓度的变化。2019年的诺贝尔生理学或医学奖,就是颁给.............
  • 回答
    想必你对矩阵的特征向量很感兴趣,但又觉得教科书上的那些公式推导有点绕。别担心,今天咱们就用大白话聊聊,陶哲轩他们那些聪明人是怎么把这个问题变得更“接地气”的。首先,咱们得明白,什么是矩阵的特征向量和特征值。你想啊,一个矩阵就像一个“变换器”,它能把一个向量变成另一个向量。比如,你给它一个向量,它可能.............
  • 回答
    230 种魔方世界:晶体学空间群的奥秘与命名法想象一下,你手中有一个神奇的魔方,它不是普通的六面体,而是由无数个微小的、重复的图案组成的。这些图案,就像是宇宙的基石,构成了我们周围物质世界的骨架。而晶体学中的空间群,就是对这些微小图案如何以不同方式排列、组合,形成千变万化三维结构的分类体系。说到“2.............
  • 回答
    想象一下,你面前有一个非常复杂的、弯弯曲曲的函数图形,就像一座起伏的山峦。你站在山脚下,想知道在某个特定位置附近的山峰高度和坡度大概是怎样的。直接去丈量整座山,那太难了!泰勒公式就像一个超级聪明的探险家,它能帮你在局部范围内,用最简单的方式来描述这个复杂的“山峦”。我们先把这个复杂的函数叫做 $f(.............
  • 回答
    韦达跳跃:一个关于数论的奇妙故事想象一下,我们生活在一个由数字组成的奇妙世界里。在这个世界里,数字们有着自己的规律和秘密,等待着我们去发现。今天,我们要讲一个关于数字们之间“跳跃”的故事,这个故事的主角叫做“韦达跳跃”。 什么是韦达跳跃?“韦达跳跃”这个名字听起来有点高大上,但其实它描述的是一个非常.............
  • 回答
    想象一下,我们把一大堆特别特别小的粒子,比如原子,放进一个冷得不能再冷的“冰柜”里。这个“冰柜”可不是普通的冰箱,它能把粒子的温度降到接近绝对零度(273.15℃)。当我们把温度降到这么低的时候,这些原子们就变得非常“听话”了。它们不再像平时那样到处乱跑,各自为政,而是慢慢地、慢慢地,开始“黏”在一.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有