Skip to main content
 首页 » 编程设计

python之为什么在 Python 中返回元组比返回多个值更快

2025年05月04日10Free-Thinker

我做了一个小测试:

In [12]: def test1(): 
    ...:     return 1,2,3 
    ...:  
 
In [13]: def test2(): 
    ...:     return (1,2,3) 
    ...:  
 
In [14]: %timeit a,b,c = test1() 

最慢的运行时间是最快的运行时间的 66.88 倍。这可能意味着正在缓存中间结果。 10000000 次循环,最好的 3 次:每次循环 92.7 ns

In [15]: %timeit a,b,c = test2() 

最慢的运行时间是最快的运行时间的 74.43 倍。这可能意味着正在缓存中间结果。 10000000 次循环,最好的 3 次:每次循环 80.1 ns

返回一个元组比返回多个值快大约 15%。为什么会这样?

请您参考如下方法:

test1 和test2 产生相同的字节码,因此它们必须以相同的速度执行。您的测量条件不一致(例如,由于额外的后台进程,test2 的 CPU 负载增加了)。

>>> import dis 
>>> def test1(): 
...     return 1,2,3 
... 
>>> def test2(): 
...     return (1,2,3) 
... 
>>> dis.dis(test1) 
  2           0 LOAD_CONST               4 ((1, 2, 3)) 
              3 RETURN_VALUE 
>>> dis.dis(test2) 
  2           0 LOAD_CONST               4 ((1, 2, 3)) 
              3 RETURN_VALUE 
>>>