以下是该方案。
>>> False and 0
=> False
>>> 0 and False
=> 0
两个条件都相同,但为什么会返回不同的结果?
>>> 0 or False
=> False
>>> False or 0
=> 0
同样,两种条件都应该返回相同的结果,但为什么它们不同?
同样适用于True
和1
答案 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,然后第二个参数不被计算并返回第一个参数,反之亦然。