【发布时间】:2016-05-17 18:34:19
【问题描述】:
当我这样做时:
def create_funcs():
return (lambda: i for i in range(5))
for f in create_funcs():
print(f())
我得到了预期:
1
2
3
4
但是当我这样做时:
def create_funcs():
return [lambda: i for i in range(5)]
for f in create_funcs():
print(f())
我有点奇怪:
4
4
4
4
谁能解释一下为什么?
【问题讨论】:
-
@BrenBarn:对不起,我不明白另一个问题的答案与我的关系。
-
特别关注this answer。
-
@BrenBarn:好的,但我在 Python3.5 上,为什么会泄漏?
-
我意识到您的问题与那个问题略有不同,因为您的理解包含一个 lambda。我在下面给出了答案。
标签: python python-3.x functional-programming