【发布时间】:2021-06-03 19:27:55
【问题描述】:
这段代码打印 [16,16,16,16,16]。
functions = []
for i in range(5):
def func(x):
return x + i
functions.append(func)
for f in functions:
print(f(12))
在第一个 for 循环中,当 i 取值 3 时,被追加到列表的 func 内部是什么? func(x):x+3 或 func(x):x+i 或 func(x): x+i where i=3 ?
我假设答案是func(x):x+i,其中i 在附加到列表时不带任何实际值。有人可以使用框架、闭包和范围概念向我解释吗?当i = 3在父框架中时,为什么func(x)不附加为x+3?
【问题讨论】:
-
为什么不附加实际值,因为该值在父框架中
标签: python python-3.x scope closures