【发布时间】:2013-04-26 07:35:09
【问题描述】:
我们知道 Python 元组是不可变的,很好。当我尝试更改元组组件的引用时,我得到了一个异常,正如预期的那样。出乎意料的是,无论异常如何,组件都会发生变化,而我原以为元组不变性保证了对象不会是可变的。
它是错误、功能还是 PEP?
In [6]: x=([1],)
In [7]: type(x)
Out[7]: tuple
In [8]: x[0]+=[2,3]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-a73186f99454> in <module>()
----> 1 x[0]+=[2,3]
TypeError: 'tuple' object does not support item assignment
In [9]: x
Out[9]: ([1, 2, 3],)
【问题讨论】:
-
你不是第一个!
-
另请注意,要使元组可散列,它的所有组件都必须是可散列的。
hash((1,2,3))工作正常。hash(([],[],[]))将引发异常。
标签: python tuples immutability pep