x和y是两个变量.
我可以检查它们是否相同x == y,但我如何检查它们是否具有相同的身份?
例:
x = [1, 2, 3]
y = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
现在x == y是True,因为x和y相等,但是x和y不是同一个对象.
我正在寻找像sameObject(x, y)这种情况应该是假的东西.
Mar*_*ers 60
您可以is用来检查两个对象是否具有相同的标识.
>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x == y
True
>>> x is y
False
Run Code Online (Sandbox Code Playgroud)
以马克·拜尔斯的答案为基础:
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
Run Code Online (Sandbox Code Playgroud)
如果您还需要比较基元,建议您使用内置id()函数。
从Python文档:
返回对象的“身份”。这是一个整数,可以保证在此对象的生存期内唯一且恒定。
这样就变成了:
assert id(primitive_one) == id(primitive_two) # False
Run Code Online (Sandbox Code Playgroud)