lambda 表达式中的未定义变量

我无法理解以下功能。


def make_adder(n):

    return lambda x: x + n


plus_2 = make_adder(2)


plus_2(5)

>>> 7

在这个函数中,x 代表什么,因为 x 未定义,这如何不会导致错误?


慕慕森
浏览 186回答 3
3回答

不负相思意

您正在定义一个函数,该函数给定n返回一个接受参数 x 并返回的函数x + n。这称为高阶函数。它不会产生错误,因为您明确返回另一个需要参数的函数。

皈依舞

x 代表 lambda 表达式接收的参数,这就是它在“:”之前的原因。当您进行plus_2 = make_adder(2)调用时,lambda 表达式将 n 替换为函数 (2) 的参数,因此现在plus_2等于lambda x: x + 2。当你调用plus_2(5)lambda 表达式求值时,将 x 替换为函数参数 (5),所以结果是 5 + 2 = 7;

跃然一笑

在下面的行中:plus_2 = make_adder(2)我们将整数对象绑定2到n.之后plus_2使用参数调用when :plus_2(5)执行表达式时5将绑定到整数对象。xlambda这是运行时执行流程。由于整个过程没有歧义或错误,程序运行得很好并输出7.现在,回答您的问题:变量x表示plus_2()根据您的命名传递给的任何值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python