kickasswbw 发表于 2025-11-9 23:23:18

闭包第V讲里面的闭包

第8分09秒附件的cube和square的变量为什么会指向内层exe_of

FishC 发表于 2025-11-9 23:24:17

你好!关于你在闭包第V讲中提到的 cube 和 square 变量指向内层 exe_of 的问题,我来简单解释一下。

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

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

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


def make_power(n):
    def exe_of(x):
      return x ** n
    return exe_of

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

# 调用 square(5) 返回 25,cube(5) 返回 125


总结原因:

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


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 闭包第V讲里面的闭包