我有一个正在运行的 Python 脚本,用于测试两个条件的结合,其中一个很容易验证,而另一个很难。假设我在 Python 中将其编写为 easy_boole 和 hard_boole
。解释器是否总是先检查 easy_boole
,然后在 easy_boole == False
时返回 False
?解释器是否总体上经过优化以尽快解决这些类型的语句?
最佳答案
是的,and
和or
都是所谓的短路运算符。 and
表达式的计算在值为假时结束,or
表达式的计算在值为真时立即结束。
可以找到相关文档here .
这是一段代码,您可以通过它自己观察这种行为:
def fib(n):
if n <= 2:
return 1
return fib(n-1) + fib(n-2)
print(False and fib(100)) # prints False immediately
print(True and fib(100)) # takes very, very long
print(fib(100) and False) # takes very, very long
考虑到这一点,请始终使用 easy_boole 和 hard_boole
。
关于python - Python 中的 bool 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34558835/