Python中为什么直接在lambda后括号传参无法得到预期输出?
问题原因分析
你的第二段代码无法得到预期输出的核心原因是没有正确完成lambda匿名函数的调用语法,具体问题如下:
- 首先,lambda表达式本身是一个函数对象,如果你要直接调用它并获取返回值,需要先把整个lambda表达式用括号包裹,再在后面追加参数括号传入实参。你的写法没有给lambda加外层括号,Python解释器会将
(10,20)错误识别为是对n2的调用,逻辑变成了n1 * (n2(10,20)),而n2是整数类型根本无法被调用,本身就会触发类型错误。 - 就算不考虑上述优先级错误,你的写法本质上是把lambda函数对象本身传给了print函数,打印的只会是函数的内存地址,不会执行函数逻辑得到计算结果。
正确写法
如果你要直接调用lambda完成计算,正确代码如下:
print( (lambda n1,n2: n1 * n2)(10,20) )
运行后就可以得到预期输出200。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

