提问人:alixi6 提问时间:10/24/2023 更新时间:10/24/2023 访问量:91
当我们使用 for 循环创建函数时 - 它是闭包吗?
When we use a for loop to create functions - is it a closure?
问:
我试图了解 Python 中的闭包概念。我见过很多这样的例子:
funcs = []
for n in range(1, 4):
funcs.append(lambda x: x + n)
for f in funcs:
print(f(1))
我明白为什么输出是:4 4 4
但我不明白的是,为什么这被称为闭合?闭包不应该是一个嵌套函数,可以访问封闭函数的变量吗?在这里,我们只是修改一个全局变量,它在最后一个周期后等于 3。n
此外,如果为函数分配变量
a = funcs[1]
print(a.__closure__)
print(a.__code__.co_freevars)
它返回
None
()
所以请告诉我,上面的代码是否创建闭包?我应该把它看作是闭包中的自由变量,还是只是一个全局变量?n
答: 暂无答案
上一个:lambda 函数闭包捕获什么?
评论