繁体   English   中英

Python 运算符:数学优先级比较运算符与相等运算符

[英]Python Operators: Math Precedence Comparison operators vs equality operators

print 1>0 == (-1)<0           # => False
print (1>0) == ((-1)<0)       # => True

第一行打印 False。 第二行打印 True

问题是如果按照顺序比较运算符高于相等运算符。

两行都不应该打印 True 吗? (或者至少是同样的事情..)

https://www.codecademy.com/en/forum_questions/512cd091ffeb9e603b005713

相等和大于和小于运算符在 Python 中具有相同的优先级。 但是您会看到一些奇怪的东西,因为如何评估连续具有多个比较运算符的表达式。 Python 不是使用其优先规则比较先前计算的结果,而是将它们与and 链接在一起(重复中间子表达式)。

表达式1 > 0 == -1 < 0等价于(1 > 0) and (0 == -1) and (-1 < 0) (除了每个重复的子表达式,比如-1只被评估一次,如果它是具有副作用的函数调用而不是整数文字,这可能很重要)。 由于中间的子表达式是False ,所以整个事情都是False

在第二个版本中,括号阻止了比较链接的发生,所以它只是独立地评估不等式,然后比较True == TrueTrue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM