我无法理解以下功能。def make_adder(n): return lambda x: x + nplus_2 = make_adder(2)plus_2(5)>>> 7在这个函数中,x 代表什么,因为 x 未定义,这如何不会导致错误?
3 回答
皈依舞
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;
跃然一笑
TA贡献1826条经验 获得超6个赞
在下面的行中:
plus_2 = make_adder(2)
我们将整数对象绑定2
到n
.
之后plus_2
使用参数调用when :
plus_2(5)
执行表达式时5
将绑定到整数对象。x
lambda
这是运行时执行流程。由于整个过程没有歧义或错误,程序运行得很好并输出7
.
现在,回答您的问题:变量x
表示plus_2()
根据您的命名传递给的任何值。
添加回答
举报
0/150
提交
取消