所以我得到了以下结果:
() is ()
返回True
(两个对象之间的比较)id(()) is id(())
返回False
。 (对象身份的表示之间的比较)'is'运算符比较两个对象的身份; id()函数返回一个表示其身份的整数。
给定案例(1),对象()
与对象()
具有相同的身份(内存地址);但在情况(2)中,他们的身份的表示彼此并不相同。
为什么?
答案 0 :(得分:1)
id(..)
函数返回一个整数,表示对象的“身份”。虽然如果两个变量x
和y
引用相同的对象,x is y
成功,id(x)
的结果相同,则确实如此到id(y)
,并不意味着那些整数本身就是同一个对象。
您应该使用:
id(()) == id(())
# ^ == not is
在Python中,即使int
是对象,虽然通常有缓存,小整数确实引用同一个对象,但以下测试通常会失败:
>>> 1234567890 is (1234567891-1)
False
>>> 1234567890 == (1234567891-1)
True