gpt4 book ai didi

python - python如何在调用嵌套函数时记住封闭范围变量的值?

转载 作者:行者123 更新时间:2023-11-28 21:16:23 24 4
gpt4 key购买 nike

我读了一个关于闭包的例子

def outer():
x = 1
def inner():
print x # 1
return inner

我们的变量 x 的生命只到函数 outer 运行时为止。当我调用 outer 并返回 inner 的地址时,变量 x 应该已经死亡,因为函数 outer 已经退出但我仍然如何通过返回的 inner 函数访问它?

python variable scope in nested functions

这个链接回答说inner使用的变量的值是在outer返回inner函数给caller时存储的,但是

现在看这段代码

 def outer():
x = 1
def inner():
print x*n # n not defined anywhere
return inner

我运行了这段代码并且当我调用 outer 时,这段代码没有给出任何错误,这意味着 python 在运行 outer 时不会检查 inner 函数使用的变量。那么它怎么知道它必须在退出后保留 'x' 呢?

最佳答案

The life of our variable x is only till the time the function outer runs

没有。 x 只要可以从某个地方到达它就会一直存在。而且,它来自 inner 函数。

This piece of code doesn't give any error when i call outer , that means that python doesn't checks the variables used by inner function while running outer

n 可以在调用outer之后定义,但是调用它的结果之前,inner。在那种情况下,inner 的 body 如果完全合法。

如果您没有返回inner,那么就没有理由保留x,因为您无法到达inner , 因此不能以某种方式将 x 纳入计算。

关于python - python如何在调用嵌套函数时记住封闭范围变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28658839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com