如何在一个Python lambda函数中执行多个操作
问题解答
错误原因
你编写的代码无法运行是因为Python默认将逗号识别为元组分隔符,你写的赋值语句实际是创建了一个包含3个元素的元组:
- 第一个元素为仅实现加法的lambda函数
- 第二个元素为全局变量
b减a的计算结果 - 第三个元素为全局变量
a乘b的计算结果
尝试将元组作为函数调用,自然会触发类型错误。
正确实现方式
要在单个lambda内返回多个运算结果,只需要将多个返回值打包为元组放在lambda的返回位置即可,示例代码如下:
a = 1 b = 2 # 将多个运算结果用括号包裹为元组返回 my_function = lambda a, b: (a + b, b - a, a * b) print(my_function(a, b))
运行后输出结果为:(3, 1, 2)
三个返回值按顺序对应加法、减法、乘法的运算结果。如果需要单独取用各个结果,可以直接对返回值解包:
add_res, sub_res, mul_res = my_function(a, b) print(f"加法结果:{add_res},减法结果:{sub_res},乘法结果:{mul_res}")
拓展:lambda内执行多个非返回操作
如果你需要在lambda内先执行打印、变量修改这类不需要返回的操作,再返回运算结果,可以把所有操作按顺序放在元组中,最后取元组的最后一位作为返回值即可,示例:
# 先打印参数,再返回运算结果 my_function = lambda a, b: (print(f"传入参数a={a}, b={b}"), (a+b, b-a, a*b))[-1] print(my_function(1,2))
内容的提问来源于stack exchange,提问作者PythonCoder8
相关产品推荐
相关产品推荐

