一尘不染

具有lambda函数的列表理解

python

def multipliers():
return [lambda x: i * x for i in range(4)]

print([m(1) for m in multipliers()]) # [3, 3, 3, 3]

为什么不是[0, 1, 2, 3]呢?听不懂 那么,由于某种原因,我们i = 3所有的lambda中都有?为什么?


阅读 179

收藏
2021-01-20

共1个答案

一尘不染

这是因为Python的后期绑定关闭。您可以通过以下方式解决此问题:

def multipliers():
    return [lambda x, i=i : i * x for i in range(4)]
2021-01-20