【发布时间】:2017-12-17 03:25:38
【问题描述】:
我正在尝试使用 for 循环生成具有不同参数 i(见下文)的几个函数,但似乎所有这些函数都使用 i 的最后一项。谁能告诉我如何处理这个问题?
这是一个简化的示例。我实际上需要生成200多个不同参数的函数。
funs = ()
for i in range(2):
f = lambda x: x+i
funs += (f,)
那么事实证明这两个函数做的事情是一样的:
funs[0](1)
输出:2
funs[1](1)
输出:2
但我希望第一个函数给出的结果是 1 而不是 2。
非常感谢您。
【问题讨论】:
-
如果你能生成函数,你可以用一个来完成。 Python 函数非常动态。
-
请参阅 Python 常见问题解答中的 Why do lambdas defined in a loop with different values all return the same result?。
标签: python