比较运算符的优先级和绑定

时间:2018-11-04 06:23:08

标签: python python-3.x

为什么表达式1> = 2 == 5 <= 4的结果为False?

根据python 3的documentation,运算符> =,==,<=具有相同的优先级,并且从左到右绑定。按照规则,对语句的评估应采用以下方式(假设True = 1和False = 0):

1>=2==5<=4
=> False==5<=4
=> False<=4
=> True

我无法理解为什么此表达式评估为False。我是python的新手。谁能帮助我了解此运算符的优先级?

3 个答案:

答案 0 :(得分:2)

根据文档,它不是从左到右准确评估的。 and是隐式的

这是错误的,因为至少一个(第一个)条件是错误的,从而导致短路评估

1>=2 and 2==5 and 5<=4
=> False and (doesn't matter)
=> False 

答案 1 :(得分:1)

比较可以任意链接,例如

  

x      

1> = 2 == 5 <= 4可以写为

     

1> = 2和2 == 5和5 <= 4

您可以在python here中进一步了解比较运算符。

答案 2 :(得分:0)

比较可以任意链接,例如1 >= 2 == 5 <= 4等效于1 >= 22 == 55 <= 4,除了25是仅被评估一次(但是在1>=2==5的情况下,5在发现1 >= 2为假时根本不评估,而在2==5<=44为如果2 ==5被认为是假的,就不会进行评估。
请注意,1 >= 2 == 5 <= 4并不意味着14之间以及24之间的任何比较。

如果有帮助,请标记答案。