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

标签 python string loops lambda

<分区>

我试图为字符串列表创建一个 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 在调用函数时在闭包中绑定(bind)变量,而不是在定义函数时。

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

相关文章:

python - 反冲\与逃逸之间的混淆以及\的使用\"

javascript - 迭代具有相同名称的对象属性

SQL Server : Endless WHILE EXISTS loop

Javascript 在循环调用 Google Analytics API 后,如何显示多个结果?

python - 如何将给定数据框的索引和列名称一起列出?

python - 如何使得在数据库中保存数据时,函数生成的数据自动插入到Django ORM字段中

java - 如何在 Java 中使用 String 或 StringBuilder 倒序搜索?

python - 通过命令行仅针对特定模块禁用 python 警告

Python 请求 head 显示 "301"而 get 返回 "200"

java - 使用正则表达式获取文件名