我运行了代码
a = True
b = False
c = False
d = False
e = False
import time
iterations = int(1e6)
start = time.time()
for _ in range(iterations):
a or b or c or d or e
print(time.time() - start)
start = time.time()
for _ in range(iterations):
b or c or d or e or a
print(time.time() - start)
结果
0.10876178741455078
0.26296424865722656
答案 0 :(得分:6)
这是因为short-circuiting:
True or WHATEVER # always True
在a
的第一个表达式中True
首先出现,无需继续。
一种炫酷的方式是使用一段因短路而永远无法运行的代码:
>>> def _print():
... print "no short circuit"
...
>>> True or _print()
True
>>> False or _print()
no short circuit
答案 1 :(得分:2)
因为or
懒惰地评估,并且如果找到True
则不再需要检查;如果第一个是False
,那么它必须评估下一个表达式,直到找到True
或者没有更多的检查。