所以我得到以下结果:
() is ()
返回True
(两个对象之间的比较)id(()) is id(())
返回False
。 (对象标识的表示之间的比较)
The ‘is‘ operator compares the identity of two objects; the id() function returns an integer representing its identity.
给定情况 (1),对象 ()
与对象 ()
具有相同的标识(内存地址);但在情况(2)中,他们身份的表示并不相同。
这是为什么?
最佳答案
id(..)
函数返回一个整数,可以说代表一个对象的“身份”。虽然如果两个变量 x
和 y
引用同一个对象,x is y
确实成功了,并且 id(x)
的结果等于 id(y)
,这并不意味着这些整数主题本身是同一个对象。
因此你应该使用:
id(()) <b>==</b> id(())
# ^ == not is
在 Python 中,即使 int
也是对象,虽然通常有一个缓存 使得小整数确实引用同一个对象,但下面的测试通常会失败:
>>> 1234567890 is (1234567891-1)
False
>>> 1234567890 == (1234567891-1)
True
关于python - `is` 对象标识表示比较 : direct object comparison vs. 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43032124/