【发布时间】:2016-11-14 16:39:39
【问题描述】:
据我所知,使用[], {} 或() 实例化对象分别返回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)
我在the docs for tuple() 中能找到的唯一相关信息是:
[...] 例如,
tuple('abc')返回('a', 'b', 'c'),tuple([1, 2, 3])返回(1, 2, 3)。 如果没有给出参数,构造函数会创建一个新的空元组()。
可以说,这不足以回答我的问题。
那么,为什么空元组具有相同的标识,而列表或字典等其他的则没有呢?
【问题讨论】:
标签: python python-3.x tuples identity python-internals