This question already has answers here:
Local variables in nested functions
(3个答案)
5年前关闭。
我试图为字符串列表创建lambda函数列表。
columns = ['a', 'b', 'c']
formats = []
for i, v in enumerate(columns)
    formats.append(lambda x: str(i + 1) + '%4f' %x)

formats[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在调用函数时绑定闭包中的变量,而不是在定义函数时绑定。

关于python - 为什么lambda函数保持循环的最后一步的形式? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23806143/

10-10 02:36