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 chains them together 与 and
(重复中间的子表达式),而不是使用其优先规则比较先前计算的结果。
表达式 1 > 0 == -1 < 0
等同于 (1 > 0) and (0 == -1) and (-1 < 0)
(除了每个重复的子表达式,如 -1
只被评估一次,如果它是一个函数调用,这可能很重要副作用而不是整数文字)。由于中间的子表达式是 False
,因此整个表达式是 False
.
在第二个版本中,括号阻止了比较链接的发生,所以它只是独立地计算不等式,然后比较 True == True
即 True
。
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 chains them together 与 and
(重复中间的子表达式),而不是使用其优先规则比较先前计算的结果。
表达式 1 > 0 == -1 < 0
等同于 (1 > 0) and (0 == -1) and (-1 < 0)
(除了每个重复的子表达式,如 -1
只被评估一次,如果它是一个函数调用,这可能很重要副作用而不是整数文字)。由于中间的子表达式是 False
,因此整个表达式是 False
.
在第二个版本中,括号阻止了比较链接的发生,所以它只是独立地计算不等式,然后比较 True == True
即 True
。