以下Python代码的输出结果是什么?
def outer(): funcs = [] for i in range(3): def inner(): return i funcs.append(inner) return funcs for f in outer(): print(f(), end=" ")
Python 的闭包(closure)捕获的是变量 i 本身,而不是循环中每个 i 的当前值。
循环过程中,i 依次为 0, 1, 2,但是每次创建的 inner 函数都引用同一个变量 i。
当循环结束时,i 的值是 2。
因此,在 outer() 执行完毕后返回的三个 inner 函数,它们的闭包中引用的 i 都是循环结束后最终的 i 值。