1

如果你能告诉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

4 回答 4

11

and短路算子

如果第一个参数是 ,则计算第二个参数True。同样,对于后续参数。

于 2013-09-17T08:33:34.913 回答
5

这与条件子句无关,但与布尔运算符andor. 他们是短路操作员。如果第一个值为 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返回False,所以不会因为c不需要而最终运行。

于 2013-09-17T08:37:22.317 回答
3

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

于 2013-09-17T08:32:21.097 回答
3

Python 使用“惰性求值” if:参见文档

“表达式 x 和 y 首先计算 x;如果 x 为假,则返回其值;否则,计算 y 并返回结果值。”

于 2013-09-17T08:32:22.113 回答