为什么'和'和'或'的行为与0,1,真,假不同?

时间:2017-06-09 11:24:52

标签: python python-3.x logical-operators

以下是该方案。

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

两个条件都相同,但为什么会返回不同的结果?

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

同样,两种条件都应该返回相同的结果,但为什么它们不同?

同样适用于True1

的情况

3 个答案:

答案 0 :(得分:1)

在python中,and, or运算符不返回布尔值。他们返回评估的最后一件事。由于它们是短路运算符,因此需要对表达式0 and False求值的最后一项是0。同样,对于0 or False,需要检查的最后一件事是第二个操作数False

来自python文档:

  • x or y:如果x为false,则为y,否则为x
  • x and y:如果x为false,则为x,否则为y
  • not x:如果x为false,则为True,否则为False

答案 1 :(得分:0)

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

ObjectMapper mapper = new ObjectMapper();
String jsonInString = mapper.writeValueAsString(listRdv);
model.addAttribute("listRvd", jsonInString);

它正在执行False and 0 语句,因此两个元素必须求值为1.由于False没有,因此它不会检查第二个元素并返回False。这也适用于and,但由于0是第一个返回0的元素。

0 and False

在这种情况下,它正在执行False or 0 评估,因此其中一个元素必须求值为1(或True)。由于False没有,它会检查第二个运算符(or),它不会计算为1,因此返回它。这同样适用于0

在这里你有另一种方法可以消除任何疑问。使用0 or False,它会在评估为0 or "Text"时返回"Text"

答案 2 :(得分:0)

or是一个短路运算符,因此只有在第一个参数为false时才会计算第二个参数。在False or 0的情况下,第一个参数被计算为False,然后计算第二个参数,即0,并返回0.这对两种情况都有效(0 or False也是如此。)

and也是一个短路运算符,因此只有在第一个参数为真时它才会计算第二个参数。在False and 0的情况下,第一个参数被计算为False,然后第二个参数不被计算并返回第一个参数,反之亦然。

了解更多clarification, refer the docs.