Python 将一个数字与“0”进行比较是否有很大区别==&引用;还是作为一个傻瓜?

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

在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               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