鱼C论坛

 找回密码
 立即注册
查看: 3441|回复: 4

[已解决]不同的返回值

[复制链接]
发表于 2023-6-25 16:31:38 | 显示全部楼层
本帖最后由 sfqxx 于 2023-6-25 18:01 编辑



代码1中的返回值是`None`,因为`funB()`函数并没有显式指定返回值。虽然`funB()`函数会打印变量`x`的值`690`,但这并不等同于函数有一个明确的返回值。使用`return funB()`将会导致函数`funB()`立即执行并打印变量`x`的值,但最终返回的结果仍然是`None`。

代码2中的返回值是`funB`函数对象本身。创建这个闭包时,`funA()`函数定义了一个内部函数`funB()`,返回该内部函数的引用。由于`funB()`本身是一个函数,可以在需要时再调用它来打印变量`x`的值。因此,在代码2中,使用`return funB`会返回一个函数对象,用途与任何其他普通函数一样。该函数对象可以传递给其他函数或方法作为参数,在需要时更具体地进行处理。

总之,使用`return funB()`时,将强制执行内部函数并返回它的结果。而使用`return funB`时,只返回内部函数对象的引用,它可以稍后被再次调用,内容将不会立即执行。两种方法都可以实现闭包的目的,具体选择哪一个取决于代码的实际需求。
求最佳答案

点评

我很赞同!: 5.0
我很赞同!: 5
非常感谢您的指点!  发表于 2023-6-25 21:44
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-23 03:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表