为什么“and”和“or”与0、1、True和False的行为不同?

2024-03-28 19:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是场景。你知道吗

>>> False and 0
=> False
>>> 0 and False
=> 0

这两个条件是相同的,但为什么它返回不同的结果?你知道吗

>>> 0 or False
=> False
>>> False or 0
=> 0

同样,这两个条件应该返回相同的结果,但是为什么它们不同呢?你知道吗

这同样适用于True1的情况


Tags: orandfalsetrue场景情况条件
3条回答

Python条件检查使用Short-Circuit Evaluation。这意味着:

False and 0

它正在执行一个and语句,因此两个元素的值都必须为1。因为False不检查第二个,所以它不检查第二个并返回False。这也适用于0 and False,但是由于0是第一个元素,因此它返回0。你知道吗

False or 0

在本例中,它正在执行or求值,因此其中一个元素的求值必须为1(或True)。因为False没有,所以它检查第二个操作符(0),它的计算结果都不是1,所以它返回它。这同样适用于0 or False。你知道吗

这里有另一种方法可以消除任何疑问。使用0 or "Text"它返回"Text",因为它的计算结果是True。你知道吗

or是一个短路运算符,因此它只在第一个参数为false时计算第二个参数。在这种情况下,False or 0,第一个参数的值为False,然后第二个参数的值为0,并返回0。这对这两种情况都有效(0 or False)。你知道吗

and也是一个短路运算符,因此它仅在第一个参数为真时计算第二个参数。在False and 0情况下,第一个参数求值为False,然后第二个参数不求值并返回第一个参数,反之亦然。你知道吗

更多信息clarification, refer the docs.

在python中,and, or运算符不返回布尔值。它们返回最后评估的内容。因为它们是短路运算符,所以表达式0 and False最不需要计算的是0。类似地,对于0 or False,最后需要检查的是第二个操作数False。你知道吗

从python文档中:

  • x or y:如果x为假,则y,否则x
  • x and y:如果x为假,则x,否则y
  • not x:如果x为假,则为真,否则为假

相关问题 更多 >