2024-05-14 08:36:59 发布
网友
print 1>0 == (-1)<0 # => False print (1>0) == ((-1)<0) # => True
第一行打印错误。 第二行打印正确
问题是根据顺序比较运算符是否在相等运算符之上。你知道吗
这两行不是都是真的吗?(或者至少是同样的事情……)
https://www.codecademy.com/en/forum_questions/512cd091ffeb9e603b005713
在Python中,相等运算符和大于运算符以及小于运算符具有相同的优先级。但是您看到了一些奇怪的现象,因为一行中有多个比较运算符的表达式是如何计算的。Python没有使用它的优先规则来比较以前的计算结果,而是用and(重复中间的子表达式)将它们链接在一起。你知道吗
and
表达式1 > 0 == -1 < 0等价于(1 > 0) and (0 == -1) and (-1 < 0)(除了每个重复的子表达式,如-1只计算一次,如果它是具有副作用的函数调用而不是整数文本,这可能很重要)。因为中间的子表达式是False,所以整个过程就是False。你知道吗
1 > 0 == -1 < 0
(1 > 0) and (0 == -1) and (-1 < 0)
-1
False
在第二个版本中,括号阻止了比较链接的发生,因此它只是独立地计算不等式,然后比较True == True,也就是True。你知道吗
True == True
True
在Python中,相等运算符和大于运算符以及小于运算符具有相同的优先级。但是您看到了一些奇怪的现象,因为一行中有多个比较运算符的表达式是如何计算的。Python没有使用它的优先规则来比较以前的计算结果,而是用
and
(重复中间的子表达式)将它们链接在一起。你知道吗表达式
1 > 0 == -1 < 0
等价于(1 > 0) and (0 == -1) and (-1 < 0)
(除了每个重复的子表达式,如-1
只计算一次,如果它是具有副作用的函数调用而不是整数文本,这可能很重要)。因为中间的子表达式是False
,所以整个过程就是False
。你知道吗在第二个版本中,括号阻止了比较链接的发生,因此它只是独立地计算不等式,然后比较
True == True
,也就是True
。你知道吗相关问题 更多 >
编程相关推荐