【发布时间】:2015-10-18 07:35:56
【问题描述】:
def multipliers():
l = []
for i in range(4):
l.append(lambda x : x * i )
return l
>>> ll[0](2)
6
>>> ll[1](2)
6
>>> ll[2](2)
6
>>> ll[3](2)
6
你能解释一下这里的结果吗?我希望得到:
0
2
4
6
【问题讨论】:
-
相关:stackoverflow.com/questions/2295290/…(如何处理您的问题,请参阅第二个答案,以及第一个解释为什么会发生)
-
虽然我不怪你没有发现这一点:尽管我知道存在这个问题,但我用 Google 尝试了四次。
-
site:stackoverflow.com python lambda出现了几个好结果(包括那个)。 -
正如线程中所指出的,解决此问题的一种简单方法是使用
i作为 lambda 的默认参数:lambda x, i=i: x*i
标签: python python-2.7