Python3:具有相同优先级的多个运算符

时间:2018-09-30 23:54:01

标签: python

我最近开始学习Python。

我的朋友问我3 < 5 != True的值是哪个。

由于我有使用javascript和c ++的经验,因此我回答了False。 (我能够用两种语言看到错误的信息)

因为,具有相同优先级(comparison)的运算符从左到右起作用。

因此首先评估3 < 5,它就变成True,而True != TrueFalse

我认为这是正确的答案。

但事实并非如此。

我在计算机上运行了此表达式,并说它是True

我想念什么吗?还是Python以不同的方式评估具有相同优先级的运算符?

1 个答案:

答案 0 :(得分:6)

表达式3 < 5 != True的计算方式为:

(3 < 5) and (5 != True)

True == 1起,等于:

(3 < 5) and (5 != 1)

当然,两个部分的求和结果均为True,因此您的结果为True

docs中描述了链式比较:

  

比较可以任意链接,例如x < y <= z是等效的   到x < y and y <= z,除了y仅被评估一次(但在两次评估中   发现z为假时,根本不会评估案例x < y