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

이준형*_*이준형 4 python

我最近开始学习Python.

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

由于我之前有过javascript和c ++的经验,我回答道False.(我能用两种语言看到假的)

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

所以这3 < 5是第一个评价,成为TrueTrue != TrueFalse.

我相信这是正确的答案.

但事实证明事实并非如此.

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

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

jpp*_*jpp 6

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

(3 < 5) and (5 != True)
Run Code Online (Sandbox Code Playgroud)

因为True == 1,这相当于:

(3 < 5) and (5 != 1)
Run Code Online (Sandbox Code Playgroud)

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

链接比较在文档中描述:

比较可以任意链接,例如,x < y <= z等同于x < y and y <= z,除了y仅评估一次(但在两种情况下z都没有被评估,当x < y发现是假的时).

  • @ChristianDean,我认为我不能比文档更好地解释它,所以我已经包含了一个引用. (2认同)