Python自定义函数中lambda不输出计算结果仅显示函数地址原因求解
问题原因
你当前的代码只把lambda表达式赋值给了变量o,打印的时候直接输出了o这个函数对象本身,没有执行函数的计算逻辑,所以得到的是函数的内存地址标识,而非你预期的求和结果。
修正方法
- 方法一:调用函数时传入参数执行计算
def myfunc(a,b): o = lambda a,b : a+b print(o(a, b)) # 增加括号传入参数,触发lambda函数执行 myfunc(5,5) # 输出:10
- 方法二:简化冗余的lambda定义,直接计算输出
如果你的逻辑只是求和,不需要单独封装匿名函数,可以直接简化代码:
def myfunc(a,b): print(a + b) myfunc(5,5)
- 补充优化:lambda可以复用外层函数的参数,不需要重复定义
def myfunc(a,b): o = lambda : a + b # 直接使用外层的a、b,不需要重复定义参数 print(o()) myfunc(5,5)
内容的提问来源于stack exchange,提问作者T.KHAN
相关产品推荐
相关产品推荐

