如何检查两个变量是否引用同一对象?

65 投票
2 回答
26258 浏览
提问于 2025-04-16 03:44

x 和 y 是两个变量。
我可以用 x == y 来检查它们是否相等,但我该如何检查它们是否是同一个对象呢?

举个例子:

x = [1, 2, 3]
y = [1, 2, 3]

现在 x == y 的结果是 True,因为 x 和 y 的值是相等的,但它们并不是同一个对象。
我想要一个类似 sameObject(x, y) 的方法,在这种情况下,它的结果应该是 False。

2 个回答

3

使用 x is y 或者 id(x) == id(y) 来判断它们是否是同一个东西。这两种方法看起来是一样的。

id(object) 会返回一个独特的数字(身份),这个概念类似于C语言中的指针。对于调试来说,使用 id(x) == id(y) 更方便。

x is y 看起来更好看。


== 是用来比较两个对象是否相等的,实际上是调用了 object.__eq__(self, other) 这个方法。

82

你可以用 is 来检查两个对象是否是同一个东西。

>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x == y
True
>>> x is y
False

撰写回答