Lambda函数考试备考疑问:代码执行逻辑与报错解析
问题拆解与解答
首先明确函数调用时的参数传递:
调用f(lambda x:x+1, 0)时,函数f的两个参数被赋值为:
a=lambda x:x+1:这是一个匿名函数,接收参数x,返回x+1的计算结果b= 0:整数类型的常量
一、return a(b)的含义与返回值1的来源
a(b)本质是调用匿名函数a,并将b的值作为参数传入。
具体执行流程:
- 匿名函数
a的参数x被赋值为b的值0 - 执行函数体
x+1,计算得0+1=1 - 这个结果作为
a(b)的返回值,也就是函数f的返回值,最终print输出1
二、return b(b)的含义与报错原因
b(b)的逻辑是尝试把b当作可调用的函数,同时将b的值作为参数传入这个函数。
但这里的b是整数0,整数在Python中属于不可调用对象(只有函数、类等可调用类型才能通过()执行调用),因此执行时会抛出TypeError: 'int' object is not callable的错误。
三、参数值的来源
- 参数
b的取值0:直接来自调用f时传入的第二个实参 - 返回值1:是匿名函数
a对输入参数0执行x+1计算后的结果
内容的提问来源于stack exchange,提问作者Pankaj Bhide
相关产品推荐
相关产品推荐

