鱼C论坛

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

闭包第V讲里面的闭包

[复制链接]
发表于 前天 23:23 | 显示全部楼层 |阅读模式

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

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

x
第8分09秒附件的cube和square的变量为什么会指向内层exe_of
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 前天 23:24 | 显示全部楼层
你好!关于你在闭包第V讲中提到的 cube 和 square 变量指向内层 exe_of 的问题,我来简单解释一下。

在 Python 中,闭包是指一个内部函数可以“记住”并访问其外部函数的作用域,即使外部函数已经执行完毕。在示例中,可能有一个外部函数(比如 make_power)定义了一个内部函数(比如 exe_of)。当外部函数被调用时,它返回内部函数,并且内部函数会携带外部函数变量的引用。

因此,当你将外部函数的返回值赋值给 cubesquare 时,它们实际上指向了那个内部函数 exe_of。这是因为闭包机制让内部函数“绑定”了外部变量(比如指数值),所以每个变量都指向一个独立的 exe_of 函数实例。

这里有一个简单代码示例来演示:


  1. def make_power(n):
  2.     def exe_of(x):
  3.         return x ** n
  4.     return exe_of

  5. square = make_power(2)  # square 指向 exe_of,并记住 n=2
  6. cube = make_power(3)    # cube 指向另一个 exe_of 实例,并记住 n=3

  7. # 调用 square(5) 返回 25,cube(5) 返回 125
复制代码


总结原因:
  • 闭包允许内部函数访问外部变量。
  • 变量赋值(如 square 和 cube)直接引用返回的内部函数。
  • 每个内部函数实例独立“记忆”自己的参数值。


如果还有不清楚的地方,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-11 06:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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