【发布时间】:2012-12-07 07:02:39
【问题描述】:
例如,如果我有以下语句:
if( foo1 or foo2)
...
...
如果 foo1 为真,python 会检查 foo2 的条件吗?
【问题讨论】:
-
我常用的关键字提示,如果——像我一样——你懒得加载官方文档:在解释器控制台输入
help("or")。在这种情况下,请阅读第四段。 -
Python 在这里的行为与“
if”无关,与“or”有关。 -
有some modules that implement lazy evaluation in Python,可能就是你要找的。span>
-
从技术上讲,python 会短路,然后 双重评估布尔运算符的结果,如果以后使用实际的布尔值...除非它直接在
if语句 ... 是特权的(多于不是或 bool()),因此它对它们进行一次评估。双重评估取决于操作的复杂性。这是反直觉的,但这里有证据:gist.github.com/earonesty/08e9cbe083a5e0583feb8a34cc538010