如何将外部变量传递到 lambda 函数的范围内?

How external variables can be passed into the scope of lambda functions?

我想在另一个 lambda 函数中定义一个 lambda 函数,但是当我创建内部 lambda 函数时,外部 lambda 函数的参数被认为是未定义的,就像这样。

# time, game, players... are defined above this line
result = filter(lambda x: (player == min(players, key=lambda y: time(game, y, x))), words)

那么,作为 time 函数参数之一的 x 被称为未定义变量。我搜索了 Whosebug,发现我可以使用默认值将 x 更改为 lambda y, x=x: time(game, y, x).

以将其传递到 lambda y 的范围内

我想知道为什么 x 不能直接在 lambda y 的范围内使用,就像 game, time() 在其中的使用方式一样。 game, time, x 不都是 lambda y 范围之外的变量吗? x和其他variables/functions.

有什么区别

非常感谢!

我不确定您遇到问题的原因。在像这样的最小示例中:

(lambda x: (lambda y: y+x)(3))(2)

你得到了预期的 5,所以你所做的一定有更多的东西。