这两个函数在调用时似乎返回相同的值.但是,我想知道在某些情况下2号是否会引发错误?这样做是不好的做法吗?
1号:
def not_sum_to_ten(num1, num2):
if num1 + num2 != 10:
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
2号:
def not_sum_to_ten(num1, num2):
if num1 + num2 != 10:
return True
return False
Run Code Online (Sandbox Code Playgroud)
感谢您分享您的知识!
您也不需要if语句,只返回!=运算符的结果:
def not_sum_to_ten(num1, num2):
return num1 + num2 != 10
Run Code Online (Sandbox Code Playgroud)
关于原始问题,这两个函数是等价的.但是,第二种形式更简洁,效率更高,因为它不需要解释器加载函数的默认返回值,即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
Run Code Online (Sandbox Code Playgroud)
VS
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |