【发布时间】:2020-10-17 07:08:27
【问题描述】:
我想在另一个 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 被称为未定义变量。我通过 StackOverflow 搜索,发现可以使用默认值将 x 更改为lambda y, x=x: time(game, y, x) 将其传递到lambda y 的范围内。
我想知道为什么 x 不能直接在 lambda y 的范围内使用,就像 game, time() 在其中使用一样。 game, time, x不是lambda y范围之外的所有变量吗? x 和这些其他变量/函数有什么区别。
【问题讨论】:
-
你能不能把它变成一个可运行的例子,我们得到和你一样的错误?
标签: python function lambda scope closures