从我所了解的情况来看,使用
在我实际测试之前,这对我来说是相当清楚的,但我注意到
如预期的那样,当使用
我在
那么,为什么空元组具有相同的标识,而其他类型如列表或字典则不具备这种特性呢?
[]
、{}
或()
来实例化对象会返回一个新的list
、dict
或tuple
实例;一个具有新身份的新实例对象。在我实际测试之前,这对我来说是相当清楚的,但我注意到
() is ()
实际上返回的是True
,而不是预期的False
。>>> () is (), [] is [], {} is {}
(True, False, False)
如预期的那样,当使用
list()
、dict()
和tuple()
创建对象时,也会表现出相同的行为。>>> tuple() is tuple(), list() is list(), dict() is dict()
(True, False, False)
我在
tuple()
的文档中找到的唯一相关信息如下:
可以说,这对于回答我的问题是不够的。[...] 例如,
tuple('abc')
返回('a', 'b', 'c')
,tuple([1, 2, 3])
返回(1, 2, 3)
。 如果没有提供参数,构造函数会创建一个新的空元组,()
。
那么,为什么空元组具有相同的标识,而其他类型如列表或字典则不具备这种特性呢?
(1,) is (1,)
也可以返回True
。 - undefined