为什么表达式1> = 2 == 5 <= 4的结果为False?
根据python 3的documentation,运算符> =,==,<=具有相同的优先级,并且从左到右绑定。按照规则,对语句的评估应采用以下方式(假设True = 1和False = 0):
1>=2==5<=4
=> False==5<=4
=> False<=4
=> True
我无法理解为什么此表达式评估为False。我是python的新手。谁能帮助我了解此运算符的优先级?
答案 0 :(得分:2)
根据文档,它不是从左到右准确评估的。 and
是隐式的
这是错误的,因为至少一个(第一个)条件是错误的,从而导致短路评估
1>=2 and 2==5 and 5<=4
=> False and (doesn't matter)
=> False
答案 1 :(得分:1)
答案 2 :(得分:0)
比较可以任意链接,例如1 >= 2 == 5 <= 4
等效于1 >= 2
和2 == 5
和5 <= 4
,除了2
和5
是仅被评估一次(但是在1>=2==5
的情况下,5
在发现1 >= 2
为假时根本不评估,而在2==5<=4
,4
为如果2 ==5
被认为是假的,就不会进行评估。
请注意,1 >= 2 == 5 <= 4
并不意味着1
和4
之间以及2
和4
之间的任何比较。
如果有帮助,请标记答案。