我遇到了这个代码,这是Python的陷阱之一:
def create_multipliers():
return [lambda x : i * x for i in range(5)]
for multiplier in create_multipliers():
print multiplier(2)
我阅读了解决方案here但我在某些地方感到困惑。我有两个问题:
为什么要打印8,8,8,8,8
而不是0,2,4,6,8
?
他们提出了这个解决方案
def create_multipliers():
return [lambda x, i=i : i * x for i in range(5)]
i=i
做什么以及使用它的原因是什么?