如何将外部变量传递到 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
,所以你所做的一定有更多的东西。
我想在另一个 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
,所以你所做的一定有更多的东西。