Python解释器将表达式4 <5评估为True。为什么4 <5 == True返回False?

时间:2019-02-07 14:08:33

标签: python-3.x comparison operators

是否在解释器中弄乱了值和概念,并因为4 <5为True撞上了逻辑绊脚石,但该输出不被认为等于== True?

3 个答案:

答案 0 :(得分:1)

从Python documentation

  

形式上,如果a,b,c,...,y,z是表达式,而op1,op2,...,opN是表达式   比较运算符,则op1 b op2 c ... y opN z等于   op1 b和b op2 c和... y opN z,除了每个表达式是   最多评估一次。

根据此规范,4 < 5 == True等于4 < 5 and 5 == True(在Python中从operator precedence等于(4 < 5) and (5 == True)),其中4 < 5True ,但5 == TrueFalse。所以True and FalseFalse

答案 1 :(得分:1)

在Python3中:4 < 5 == True等效于4 < 5 and 5 == True,由于False的结果为5 != True

请注意,<==的优先级相同。

参考文档https://docs.python.org/3/reference/expressions.html#comparisons

答案 2 :(得分:0)

>>> 4<5
True
>>> 4<5 == True
False
>>> (4<5) == True
True
>>>

我希望这可以消除您的疑问。 4<5 == True的评估为4<5 and 5 == True,如果4<5为True,则总体返回False,但是5 == True为False。这是由于<==具有相同的优先级。