Python 将一个数字与“0”进行比较是否有很大区别==&引用;还是作为一个傻瓜?
在python进行比较的方式上,以下各项之间是否存在差异:Python 将一个数字与“0”进行比较是否有很大区别==&引用;还是作为一个傻瓜?,python,performance,comparison,Python,Performance,Comparison,在python进行比较的方式上,以下各项之间是否存在差异: if x == 0.0: print "x is zero" 及 这将使一个比另一个更受欢迎?只是补充上面的评论,下面是字节码: In [10]: dis.dis(is_zero_equal_sign) 2 0 LOAD_FAST 0 (x) 3 LOAD_CONST 1 (0) 6 COMPARE_OP
if x == 0.0:
print "x is zero"
及
这将使一个比另一个更受欢迎?只是补充上面的评论,下面是字节码:
In [10]: dis.dis(is_zero_equal_sign)
2 0 LOAD_FAST 0 (x)
3 LOAD_CONST 1 (0)
6 COMPARE_OP 2 (==)
9 POP_JUMP_IF_FALSE 20
3 12 LOAD_CONST 2 ('zero')
15 PRINT_ITEM
16 PRINT_NEWLINE
17 JUMP_FORWARD 0 (to 20)
>> 20 LOAD_CONST 0 (None)
23 RETURN_VALUE
In [11]: dis.dis(is_zero_no_equal_sign)
2 0 LOAD_FAST 0 (x)
3 POP_JUMP_IF_TRUE 14
3 6 LOAD_CONST 1 ('zero')
9 PRINT_ITEM
10 PRINT_NEWLINE
11 JUMP_FORWARD 0 (to 14)
>> 14 LOAD_CONST 0 (None)
17 RETURN_VALUE
从字节码来看,从性能上看,这种差异似乎基本上是微不足道的。使用等号时,CPython仍然必须将0作为常量加载,比较过程略有不同。如果你只是想要一个步骤少的,你可以使用没有“==”的。如果没有x代码>如果该值仅为数字,则主要区别在于可读性
如果x==0.0
会让读者明白,即使他们只看到那一行,该值也是数值<如果x
不是浮点/int,即如果x==Null或x==''或x=[]
等。除此之外,正如@CharlesDuffy所说,它只是readability@RNar我想你的意思是None
,而不是Null
@Galax yeeeeeehh,就是这个:PCool,我不知道字节码存在,但我想这正是我想知道的,哪一个需要更少的步骤。是的,你可以使用
In [10]: dis.dis(is_zero_equal_sign)
2 0 LOAD_FAST 0 (x)
3 LOAD_CONST 1 (0)
6 COMPARE_OP 2 (==)
9 POP_JUMP_IF_FALSE 20
3 12 LOAD_CONST 2 ('zero')
15 PRINT_ITEM
16 PRINT_NEWLINE
17 JUMP_FORWARD 0 (to 20)
>> 20 LOAD_CONST 0 (None)
23 RETURN_VALUE
In [11]: dis.dis(is_zero_no_equal_sign)
2 0 LOAD_FAST 0 (x)
3 POP_JUMP_IF_TRUE 14
3 6 LOAD_CONST 1 ('zero')
9 PRINT_ITEM
10 PRINT_NEWLINE
11 JUMP_FORWARD 0 (to 14)
>> 14 LOAD_CONST 0 (None)
17 RETURN_VALUE