我最近开始学习Python。
我的朋友问我3 < 5 != True
的值是哪个。
由于我有使用javascript和c ++的经验,因此我回答了False
。 (我能够用两种语言看到错误的信息)
因为,具有相同优先级(comparison
)的运算符从左到右起作用。
因此首先评估3 < 5
,它就变成True
,而True != True
是False
。
我认为这是正确的答案。
但事实并非如此。
我在计算机上运行了此表达式,并说它是True
。
我想念什么吗?还是Python以不同的方式评估具有相同优先级的运算符?
答案 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
。