为什么python不允许对元组进行实习?

为什么python不允许对元组进行实习?,python,list,tuples,string-interning,Python,List,Tuples,String Interning,不变性的好处之一是内存效率 比如说 >>> a = "abcd" >>> b = "abcd" >>> a is b True >>> a = 1 >>> b = 1 >>> a is b True 然而,对于元组,python似乎从不尝试做同样的事情。我想知道为什么 >>> a = (1, 2) >>> b = (1, 2) >>>

不变性的好处之一是内存效率 比如说

>>> a = "abcd"
>>> b = "abcd"
>>> a is b
True
>>> a = 1
>>> b = 1
>>> a is b
True
然而,对于元组,python似乎从不尝试做同样的事情。我想知道为什么

>>> a = (1, 2)
>>> b = (1, 2)
>>> a is b
False

它也不会尝试对所有整数或所有字符串执行相同的操作。您可以使用
=
这样的内部操作有成本,即存储对象所需的内存和检测重复使用的开销。小整数和短字符串是很常见的,这就值得了;元组不是。@user2357112在某些情况下,它会这样做,我理解,但我的意思是,它从不尝试使用元组进行实习。我想知道是否有设计上的原因。同样,元组是不可变的;它们的内容可能不完整。
x=([1],2)
y=([1],2)
是同一个元组吗?在
y[0]之后如何。追加('a')
?更糟糕的是,元组的可变部分可能嵌套得任意深;您想花多少时间来确定一个元组是否是完全不可变的,这样它可能值得实习?