比较两个variables是否在python中引用相同的对象

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

x = ['a', 'b', 'c'] y = x # x and y reference the same object z = ['a', 'b', 'c'] # x and z reference different objects 

那是什么isx is y

y is x将是真, y is z将是False

您也可以使用id()来检查每个variables名引用哪个唯一对象。

 In [1]: x1, x2 = 'foo', 'foo' In [2]: x1 == x2 Out[2]: True In [3]: x1 is x2 Out[3]: True In [4]: id(x1), id(x2) Out[4]: (4367888016, 4367888016) In [5]: x2 = x2 + 'bar' In [6]: x1 is x2 Out[6]: False In [7]: id(x1), id(x2) Out[7]: (4367888016, 4369529616) 

虽然两个正确的解决schemex is zid(x) == id(z)我想指出一个python的实现细节。 Python将整数作为对象存储,作为一种优化,它在起始处(-5到256)产生一堆小整数,并且将EVERYvariables保持一个小值的整数给这些预初始化的对象。 更多信息

这意味着对于初始化为相同小数字(-5到256)的整数对象来检查两个对象是否相同将返回true(ON C-Pyhon,据我所知这是一个实现细节),而对于较大只有当一个对象从另一个对象初始化时,这个数字才会返回true。

 > i = 13 > j = 13 > i is j True > a = 280 > b = 280 > a is b False > a = b > a 280 > a is b True