这两个函数在调用时似乎返回相同的值。但是,我想知道在某些情况下 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
