为了账号安全,请及时绑定邮箱和手机立即绑定

lambda 表达式中的未定义变量

lambda 表达式中的未定义变量

慕慕森 2022-01-05 13:07:59
我无法理解以下功能。def make_adder(n):    return lambda x: x + nplus_2 = make_adder(2)plus_2(5)>>> 7在这个函数中,x 代表什么,因为 x 未定义,这如何不会导致错误?
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

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


查看完整回答
反对 回复 2022-01-05
?
皈依舞

TA贡献1851条经验 获得超3个赞

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;


查看完整回答
反对 回复 2022-01-05
?
跃然一笑

TA贡献1826条经验 获得超6个赞

在下面的行中:

plus_2 = make_adder(2)

我们将整数对象绑定2n.

之后plus_2使用参数调用when :

plus_2(5)

执行表达式时5将绑定到整数对象。xlambda

这是运行时执行流程。由于整个过程没有歧义或错误,程序运行得很好并输出7.

现在,回答您的问题:变量x表示plus_2()根据您的命名传递给的任何值。


查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信