网上都说比较(<=,<,>,>=)的优先级高于等于(==,!=,<>)的优先级
请问下面的代码怎么解释
>>> 3==3>2
True
>>> (3==3)>2
False
>>> 3==(3>2)
False
我唯一能想到的就是它进行了与运算:
3==2 and 3>2
网上都说比较(<=,<,>,>=)的优先级高于等于(==,!=,<>)的优先级
请问下面的代码怎么解释
>>> 3==3>2
True
>>> (3==3)>2
False
>>> 3==(3>2)
False
我唯一能想到的就是它进行了与运算:
3==2 and 3>2
<, <=, >, >=,<>, !=, == 这些比较运算符是相同优先级,与in, not in, is, is not同属一个优先级组。
再来看你的代码 3==3>2 中有两个运算符== 与> ,优先级相同。
当优先级相同时候,Python会根据关联性Associativity来执行,除去**指数运算以外都是按照从左往右执行。例如
print(4 * 7 % 3)
# result 1
print(4 ** 2 ** 2)
# Output: 256
但> == 属于非关联性运算符,赋值和比较都属于非关联性运算符. 对于这类,Python有具体的规则,不能按照关联性来执行。举个例子 5<7<9 是等效于 5<7 and 7<9.
所以你的代码
3==3>2 相当于 3==3 and 3>2,你的猜测是正确的。
可以参考这篇文章查看更详细内容。