Skip to main content
 首页 » 编程设计

python之如何在 Python 中使用返回

2025年05月04日9mengfanrong

这两个示例函数在性能方面有什么区别吗?如果是,为什么?

def func(a): 
    if a > 0: 
        num = 1 
    else: 
        num = -1 
    return num 

和

def func(a): 
    if a > 0: 
        return 1 
    else: 
        return -1 

请您参考如下方法:

如果您真的很感兴趣,可以使用 dis 了解函数的运行速度;更多的行可能更糟:

return 最后:

  4           0 LOAD_FAST                0 (a)  
              3 LOAD_CONST               1 (0)  
              6 COMPARE_OP               4 (>)  
              9 POP_JUMP_IF_FALSE       21  
 
  5          12 LOAD_CONST               2 (1)  
             15 STORE_FAST               1 (num)  
             18 JUMP_FORWARD             6 (to 27)  
 
  7     >>   21 LOAD_CONST               3 (-1)  
             24 STORE_FAST               1 (num)  
 
  8     >>   27 LOAD_FAST                1 (num)  
             30 RETURN_VALUE 

11 行,相当快。

在if中返回:

 13           0 LOAD_FAST                0 (a)  
              3 LOAD_CONST               1 (0)  
              6 COMPARE_OP               4 (>)  
              9 POP_JUMP_IF_FALSE       16  
 
 14          12 LOAD_CONST               2 (1)  
             15 RETURN_VALUE          
 
 16     >>   16 LOAD_CONST               3 (-1)  
             19 RETURN_VALUE          
             20 LOAD_CONST               0 (None)  
             23 RETURN_VALUE          

10 行,可能稍微快一些。

还有 thefourtheye 的建议:

def func(a): 
    return 1 if a > 0 else -1 

给予:

 21           0 LOAD_FAST                0 (a)  
              3 LOAD_CONST               1 (0)  
              6 COMPARE_OP               4 (>)  
              9 POP_JUMP_IF_FALSE       16  
 
 22          12 LOAD_CONST               2 (1)  
             15 RETURN_VALUE          
 
 23     >>   16 LOAD_CONST               3 (-1)  
             19 RETURN_VALUE          

8 行,获胜者(永远不会运行的两条行)!

但这绝对是你妈妈警告过你的过早优化!