使用" =="将数字与零进行比较之间是否存在相当大的差异?还是作为一个博尔?

时间:2015-11-18 22:01:08

标签: python performance comparison

与python进行比较的方式有区别:

if not x:
    print "x is zero"

{{1}}

会让一个人更喜欢另一个人吗?

1 个答案:

答案 0 :(得分:2)

只是补充上面的评论,这里是字节码:

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作为常量加载,并且比较过程略有不同。如果你只想要一个步数较少的那个,你可以使用没有' =='

的那个。