Skip to main content
 首页 » 编程设计

python之当函数只有 1 个 if 语句时,函数是否需要 else/elif

2025年05月04日12grandyang

这两个函数在调用时似乎返回相同的值。但是,我想知道在某些情况下 2 号是否会引发错误?这样做是不好的做法吗?

1 号:

def not_sum_to_ten(num1, num2): 
  if num1 + num2 != 10: 
    return True 
  else: 
    return False 

2 号:

def not_sum_to_ten(num1, num2): 
  if num1 + num2 != 10: 
    return True 
  return False 

感谢您分享您的知识!

请您参考如下方法:

您也不需要 if 语句,只需返回 != 运算符的结果:

def not_sum_to_ten(num1, num2): 
    return num1 + num2 != 10 

对于原题,这两个函数是等价的。但是,第二种形式更简洁且效率更高,因为它不需要解释器加载函数的默认返回值,即 None。您可以使用 dis.dis() 反汇编函数对象并检查字节码:

  2           0 LOAD_FAST                0 (num1) 
              2 LOAD_FAST                1 (num2) 
              4 BINARY_ADD 
              6 LOAD_CONST               1 (10) 
              8 COMPARE_OP               3 (!=) 
             10 POP_JUMP_IF_FALSE       16 
 
  3          12 LOAD_CONST               2 (True) 
             14 RETURN_VALUE 
 
  5     >>   16 LOAD_CONST               3 (False) 
             18 RETURN_VALUE 
             20 LOAD_CONST               0 (None) 
             22 RETURN_VALUE 

对比

  9           0 LOAD_FAST                0 (num1) 
              2 LOAD_FAST                1 (num2) 
              4 BINARY_ADD 
              6 LOAD_CONST               1 (10) 
              8 COMPARE_OP               3 (!=) 
             10 POP_JUMP_IF_FALSE       16 
 
 10          12 LOAD_CONST               2 (True) 
             14 RETURN_VALUE 
 
 11     >>   16 LOAD_CONST               3 (False) 
             18 RETURN_VALUE