Python:如何处理?

时间:2013-09-17 08:28:57

标签: python boolean short-circuiting

请问如果python如何运行多个术语?

例如:

   a = 0
   b = 0
   c = 0

   if a == 0 and b == 1 and c == 0:
   # test fails

我猜python内部会将测试分成3个if。 但是,有两种可能的情况:

  • python如果一个接一个地运行全部3,其中一个是错误的,测试失败
  • 或python如果一个接一个地运行,在第一次失败时,如果测试失败,其他如果没有运行

python如何在内部运行此测试?

谢谢你,问候, 雨果

4 个答案:

答案 0 :(得分:11)

andshort-circuit operator

如果第一个参数是True,则评估第二个参数。同样,对于后续的论点。

答案 1 :(得分:5)

这与条件子句无关,而是与布尔运算符andor有关。他们是short-circuit operators。如果第一个值为False,则立即使用False。否则,将评估第二个值。

这是一个很好的例子:

>>> def a():
...     print 'a is running!'
...     return True
... 
>>> def b():
...     print 'b is running!'
...     return False
... 
>>> def c():
...     print 'c is running!'
...     return True
... 
>>> if a() and b() and c():
...     print 'hello!'
... 
a is running!
b is running!

由于b返回Falsec最终无法运行,因为没有必要。

答案 2 :(得分:3)

第二个。 and / or是短路运算符 - 如果不需要,则不计算第二个参数。请参阅文档boolean-operations-and-or-not

答案 3 :(得分:3)

Python对if使用“懒惰评估”: 请参阅docs

  

“表达式x和y首先计算x;如果x为false,则其值为   回;否则,评估y并得到结果值   返回。“