如果“and”使得任何错误传播,为什么(False and False or True)为真?

0 python boolean python-3.x

2>3是假的。对于and,如果整个表达式中有一个 false,则应该返回 false。

print(3>2 and 2>3 and 7>5 or 1>0)
Run Code Online (Sandbox Code Playgroud)

谢谢你,

Bar*_*mar 6

and优先级高于,or因此等价于

print((3>2 and 2>3 and 7>5) or 1>0)
Run Code Online (Sandbox Code Playgroud)

由于1>0为真,并且or如果其任一参数为真则为真,则整个表达式为真。

我建议在混合使用and和时使用显式括号or,因为默认分组通常不是您想要的。语言之间也存在差异,因此,如果您习惯一种语言,那么当您用另一种语言编写时,您可能会有错误的直觉。