python - 使用 "=="比较数字与零或将数字与 bool 值比较之间是否有很大差异?

标签 python performance comparison

Python 之间的比较方式有区别吗:

if x == 0.0:
    print "x is zero"

if not x:
    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 作为常量,并且比较过程略有不同。如果您只是想要步骤较少的一个,则可以使用不带“==”的那个。

关于python - 使用 "=="比较数字与零或将数字与 bool 值比较之间是否有很大差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33791271/

相关文章:

python - 未调用 CreateView 中的 Django form_valid() 和 form_invalid()

mysql - 制作一个表innodb和分区会提高mysql的性能吗?

c# - 将 Roslyn Emit 方法与 ModuleBuilder 而不是 MemoryStream 结合使用

javascript - 如果一个数组在 JavaScript 中是真值,为什么它不等于真值?

algorithm - 给定 M 最大值的每个基于比较的排序算法的时间复杂度的下限 Ω(nlogn)

string - JPA 字符串比较

python - 无法使用输入作为名称在 Python 中创建 SQL 表

python - 如何从另一个文件夹导入(python)

python - 从函数内访问变量

MySQL DELETE 查询性能调优