为什么lambda函数保持循环的最后一步的形式?

这个问题已经在这里有了答案:            >            Local variables in nested functions                                    3个
我试图为字符串列表创建lambda函数列表.

columns = ['a', 'b', 'c']
formats = []
for i, v in enumerate(columns)
    formats.append(lambda x: str(i + 1) + '%4f' %x)

并且format [0](12)的输出应该是1:12.0000

但是结果表明,我没有使用formats [0](13),formats [1](26)或formats [2](12),输出始终像3:##.####.

似乎它总是保留最后一个循环的格式.为什么?有人可以帮忙吗?

解决方法:

请参阅http://www.toptal.com/python/top-10-mistakes-that-python-programmers-make错误#6. Python在调用函数时(而不是在定义函数时)将变量绑定在闭包中.

上一篇:javascript-循环中的数组


下一篇:绘制循环中的地图而不绘制先前的点