首页 > 解决方案 > Python3:具有相同优先级的多个运算符

问题描述

我最近开始学习 Python。

我的朋友问我3 < 5 != True评估到哪个值。

因为我之前有 javascript 和 c++ 的经验,所以我回答了False. (我能够在两种语言中看到 false )

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

所以3 < 5首先评估它,它变成Trueand True != Trueis False

我相信这是正确的答案。

但事实证明并非如此。

我在我的电脑上运行了这个表达式,它说它是True.

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

标签: python

解决方案


表达式3 < 5 != True被评估为:

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

由于True == 1,这相当于:

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

当然,这两个部分都评估为True,因此您的结果是True.

文档中描述了链式比较:

比较可以任意链接,例如,x < y <= z等价于x < y and y <= z,除了y只评估一次(但在两种情况下,当发现为假z时根本不评估)。x < y


推荐阅读