鱼C论坛

 找回密码
 立即注册
查看: 349|回复: 1

[已解决]闭包--函数V

[复制链接]
发表于 2024-8-5 11:13:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在B站学到了这一讲,对于下面的函数有两个问题:1、请问“print(x)”表达的什么意思?2、为什么“funA()”会报错,而“funA()()”却生成880?谢谢大家!
def funA():
    x = 880
    def funB():
        print(x)
    return funB

funA()
<function funA.<locals>.funB at 0x0000022C47F972E0>
funA()()
880
最佳答案
2024-8-5 11:14:43
哈哈,亲爱的鱼油,闭包这个概念就像是一条神秘的鱼,你得耐心地去探索它的深海世界!让我们一起来解答你的问题:

1. **“print(x)”表达的什么意思?**
   这句话的意思是“把变量x的值打印出来”。在你的代码中,`x = 880`,所以当你调用`funB()`时,它就会顺利地把880打印出来,像一条自信满满的鱼,在水面上跃起!

2. **为什么“funA()”会报错,而“funA()()”却生成880?**
   让我们先看一看函数`funA()`的工作方式。`funA()`返回的是内部定义的函数`funB()`,但是它并没有立即执行`funB()`。所以,当你只调用`funA()`时,它只是让你知道“嘿,我已经准备好一个名为funB的小鱼了”,但这个小鱼并没有发出声音(也就是没有执行)!因此,如果你直接运行`funA()`,什么也不会发生。

   但是,当你调用`funA()()`,这就相当于首先呼唤出`funA()`,然后紧接着呼唤出这个返回的`funB()`!这时候,`funB()`帮助你抓住了`x = 880`的上下文,于是它毫不犹豫地打印出“880”,就像是鱼儿在水面上欢快地跳跃,给大家带来惊喜!

总结一下:
- `funA()`只是在召唤小鱼,但不让它冒泡。
- `funA()()`则是在召唤小鱼并让它跃出水面,展现它的魅力!

希望这个解释能让你对闭包这条神秘的鱼有更深的理解!继续加油,探索更多编程知识吧!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-5 11:14:43 | 显示全部楼层    本楼为最佳答案   
哈哈,亲爱的鱼油,闭包这个概念就像是一条神秘的鱼,你得耐心地去探索它的深海世界!让我们一起来解答你的问题:

1. **“print(x)”表达的什么意思?**
   这句话的意思是“把变量x的值打印出来”。在你的代码中,`x = 880`,所以当你调用`funB()`时,它就会顺利地把880打印出来,像一条自信满满的鱼,在水面上跃起!

2. **为什么“funA()”会报错,而“funA()()”却生成880?**
   让我们先看一看函数`funA()`的工作方式。`funA()`返回的是内部定义的函数`funB()`,但是它并没有立即执行`funB()`。所以,当你只调用`funA()`时,它只是让你知道“嘿,我已经准备好一个名为funB的小鱼了”,但这个小鱼并没有发出声音(也就是没有执行)!因此,如果你直接运行`funA()`,什么也不会发生。

   但是,当你调用`funA()()`,这就相当于首先呼唤出`funA()`,然后紧接着呼唤出这个返回的`funB()`!这时候,`funB()`帮助你抓住了`x = 880`的上下文,于是它毫不犹豫地打印出“880”,就像是鱼儿在水面上欢快地跳跃,给大家带来惊喜!

总结一下:
- `funA()`只是在召唤小鱼,但不让它冒泡。
- `funA()()`则是在召唤小鱼并让它跃出水面,展现它的魅力!

希望这个解释能让你对闭包这条神秘的鱼有更深的理解!继续加油,探索更多编程知识吧!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 17:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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