x和y是两个变量
我可以使用x == y
检查它们是否相等,但我如何检查它们是否具有相同的身份?
示例:
x = [1, 2, 3]
y = [1, 2, 3]
现在x == y
为True,因为x和y相等,但x和y不是同一个对象。
我正在寻找像sameObject(x, y)
这样的东西,在这种情况下应该是假的。
答案 0 :(得分:53)
您可以使用is
检查两个对象是否具有相同的身份。
>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x == y
True
>>> x is y
False
答案 1 :(得分:2)
以Mark Byers的回答为基础:
当变量包含对象而不是原始类型时,用于区分身份的is
评估将起作用。
object_one = ['d']
object_two = ['d']
assert object_one is object_two # False - what you want to happen
primitive_one = 'd'
primitive_two = 'd'
assert primitive_one is primitive_two # True - what you don't want to happen
如果您还需要比较基元,我建议您使用内置的id()
函数。
来自Python docs:
返回对象的“身份”。这是一个整数,在该对象的生存期内,保证该对象唯一且恒定。
这将变成这样:
assert id(primitive_one) == id(primitive_two) # False