对三个对象使用“==”运算符

时间:2012-12-09 22:36:45

标签: python operators equality

这两种方法检查三个对象之间是否有任何计算差异?

我有两个变量:xy。说我这样做:

>>> x = 5
>>> y = 5
>>> x == y == 5
True

与...不同:

>>> x = 5
>>> y = 5
>>> x == y and x == 5
True

如果它们是False怎么办?

>>> x = 5
>>> y = 5
>>> x == y == 4
False

>>> x = 5
>>> y = 5
>>> x == y and x == 4
False

计算方法有什么不同吗?

此外,x == y == z如何运作?

提前致谢!

2 个答案:

答案 0 :(得分:13)

Python链接比较,所以这两种形式是等价的:

x == y == z
x == y and y == z

除了在第一个中,y仅被评估一次。

这意味着你也可以写:

0 < x < 10
10 >= z >= 2

等。您还可以编写令人困惑的内容,例如:

a < b == c is d   # Don't  do this

初学者有时会被绊倒:

a < 100 is True   # Definitely don't do this!

总是假的,因为它与:

相同
a < 100 and 100 is True   # Now we see the violence inherent in the system!

答案 1 :(得分:0)

为已经接受的 answer 添加一点视觉演示。

用于测试三个值或变量的相等性。我们可以使用:

>>> print(1) == print(2) == print(3)
1
2
3
True

>>> print(1) == print(2) and print(2) == print(3)
1
2
2
3
True

以上语句等价但不等于,因为访问只执行一次。 Python 自然地链接关系运算符。请参阅 this 文档:

<块引用>

比较可以任意链接,例如,x < y <= z 等价于 x < y 和 y <= z,除了 y 只计算一次(但在这两种情况下,当 x < y 被发现是假的)。

如果调用的函数(并且您正在比较返回值)没有副作用,则两种方式相同。

在这两个示例中,如果第一个比较结果为 false,则不会评估第二个比较。但是:注意添加括号。例如:

>>> 1 == 2 == 0
False
>>> (1 == 2) == 0
True

this 答案。