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)这种情况应该是假的东西.
受这个关于缓存小整数和字符串的问题的启发,我发现了以下我不理解的行为.
>>> 1000 is 10**3
False
Run Code Online (Sandbox Code Playgroud)
我以为我理解了这种行为:1000是很大的缓存.1000和10**3指向2个不同的对象.但我错了:
>>> 1000 is 1000
True
Run Code Online (Sandbox Code Playgroud)
因此,Python可能会将计算与"正常"整数区别对待.但这种假设也是不正确的:
>>> 1 is 1**2
True
Run Code Online (Sandbox Code Playgroud)
如何解释这种行为?