lambda是如何工作的?

2 投票
8 回答
855 浏览
提问于 2025-04-16 08:16

我正在通过官方Python网站的教程学习Python,遇到了这个例子

>>> def make_incrementor(n):
...     return lambda x: x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43

请问x的值是从哪里来的?我对lambda的用法不太熟悉,虽然我对JavaScript中的匿名函数理解得不错,但这个让我有点困惑。有没有人能帮我解释一下?我会很感激的。

8 个回答

1

免责声明:我几乎没有Python的基础。这些内容是基于我对Scheme和λ演算的理解。

make_incrementor是一个用来创建函数的函数。调用make_incrementor(42)会返回一个新的函数,这个函数里面有一个变量x和一个值为42的变量n。当你调用这个新函数f时,传入的参数会替换掉之前绑定的变量。

4

首先,这里有一个用JavaScript写的例子:

function makeIncrementor(n) {
    return function (x) {return x + n}
}

一个lambda表达式由三个部分组成。

  • 第一个是单词 lambda(在JavaScript中是 function
  • 第二个是参数列表(在JavaScript中是 (...) 里面的部分)
  • 第三个是要计算的表达式(在JavaScript中是 {...} 里面的部分,自动返回结果)

参数列表是冒号前面的部分。这些参数在表达式的范围内是可以使用的。表达式计算的结果会作为函数的返回值。

和JavaScript不同的是,lambda只能包含一个表达式;你不能用lambda来创建一个匿名的多行函数。

5

想象一下,f 是通过 make_incrementor 这个函数创建的一个对象。

它是一个叫做“匿名函数”的东西,也就是我们常说的 lambda。

>>> f= lambda x: x+42
>>> f(10)
52

当我们把一个值传给 f 时,x 的值就出现了。

撰写回答