Python中函数返回多值较单值出现性能下降的原因是什么?
Python多返回值性能损耗底层原因
核心原因是Python的多返回值属于语法糖,本质是隐式创建元组对象返回,额外的元组创建开销就是性能差异的来源,具体细节如下:
- 单值返回逻辑:函数返回单个值时,直接将值的引用传递给调用方即可,不需要额外创建容器对象。你测试用例中返回的是
a+b的计算结果(整型),本身不需要额外的对象创建步骤,仅返回引用的开销极低。 - 多值返回逻辑:写
return a+b, True时,Python解释器会自动隐式执行tuple((a+b, True))操作,先把多个返回值打包成一个新的元组对象,再返回这个元组的引用。创建元组需要申请内存空间、写入两个元素的引用,这些步骤都是单值返回没有的额外开销。
你可以通过dis模块查看字节码确认差异:
import dis def single_return(a,b): return a+b def multi_return(a,b): return a+b, True # 输出单值返回字节码 print("单值返回字节码:") dis.dis(single_return) # 输出多值返回字节码 print("\n多值返回字节码:") dis.dis(multi_return)
执行后可以看到多值返回的函数多了BUILD_TUPLE 2指令,该指令就是用来将栈顶的2个元素打包为元组,正是这一步带来了额外耗时。
需要注意的是这个开销本身非常小,只有在百万级以上的高频调用场景下才会出现可观测的差异,普通业务场景下无需为了这点性能牺牲代码的可读性。
内容的提问来源于stack exchange,提问作者Dhavalkumar Prajapati
相关产品推荐
相关产品推荐

