三元运算符与 if-else 语句的性能

Isa*_*old 4 python if-statement ternary-operator

注意:这个问题确实已经在许多其他语言中得到了解答。但是,我找不到 Python 的答案,所以不要标记为重复。

Python 中的 if-else 语句和三元运算符在性能上有区别吗?

Ned*_*der 8

我怀疑是否存在性能差异。它们编译为等效的字节码序列:

>>> def f():
...   return a if b else c
...
>>> dis.dis(f)
  2           0 LOAD_GLOBAL              0 (b)
              2 POP_JUMP_IF_FALSE        8
              4 LOAD_GLOBAL              1 (a)
              6 RETURN_VALUE
        >>    8 LOAD_GLOBAL              2 (c)
             10 RETURN_VALUE
>>> def g():
...   if b:
...     return a
...   else:
...     return c
...
>>> dis.dis(g)
  2           0 LOAD_GLOBAL              0 (b)
              2 POP_JUMP_IF_FALSE        8

  3           4 LOAD_GLOBAL              1 (a)
              6 RETURN_VALUE

  5     >>    8 LOAD_GLOBAL              2 (c)
             10 RETURN_VALUE
             12 LOAD_CONST               0 (None)
             14 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)

与大多数性能问题一样,答案是测量。