我最近开始学习Python.
我的朋友问我3 < 5 != True评估的是哪个值.
由于我之前有过javascript和c ++的经验,我回答道False.(我能用两种语言看到假的)
因为,具有相同优先级(comparison)的运算符从左到右工作.
所以这3 < 5是第一个评价,成为True和True != True是False.
我相信这是正确的答案.
但事实证明事实并非如此.
我在我的电脑上运行了这个表达,它说它是True.
我错过了什么吗?或者Python以不同的方式评估具有相同优先级的运算符?
表达式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发现是假的时).