包含lambda函数的列表推导如何处理?

时间:2019-06-14 21:21:11

标签: python

最近,我发现将列表推导与lambda函数结合使用时会发生一件有趣的事情。

示例代码:

def multipliers():
    return [lambda x: i*x for i in range(5)]
m = multipliers()
for i in m:
    print(i(2))

您希望它打印出0、2、4、6、8,但是它却打印出8,8、8、8、8。

我认为这与延迟评估有关,但是我不确定,并且对其进行调试并没有使其更加清晰。谁能解释为什么会这样?

0 个答案:

没有答案