学习运算符时遇到一个这样的表达式:
这两个表达式按运算符优先级进行运算,按True==1和False==0,结果应该都是True吧,可是这里怎么会不同呢?
有人给咱解解惑吗?谢谢
学习运算符时遇到一个这样的表达式:
这两个表达式按运算符优先级进行运算,按True==1和False==0,结果应该都是True吧,可是这里怎么会不同呢?
有人给咱解解惑吗?谢谢
解析:
一、我们先把两个不同结果的表达式写出来:
5+2>3==2**0
(5+2>3)==2**0
二、然后进行简化,由于**的优先级比==高所以以上两个表达式可以等价为:
5+2>3==1
(5+2>3)==1
三、对于第一个表达式,+号优先级最高,同理表达式2括号中的表达式也是+号优先级较高,所以又可以等价为:
7>3==1
(7>3)==1
好了到这里,运行上面的表达式,结果如下:
所以博主的问题就变为7>3==1和(7>3)==1为什么不是都是True
经过查阅资料,发现Python支持连续的比较运算符:a > b == c,但它其实是 a > b and b == c 的简略写法,而不是表示先进行计算 a > b ,然后用结果判断是否等于c,也不是判断a是否大于 b == c 的结果。
所以7>3==1应为7>3 and 3==1 为False。
参考阅读:https://blog.csdn.net/weixin_39793434/article/details/110025611