我发现了一些问题询问TypeError: 'tuple' object does not support item assignment
对SO,但尽管如此,我很困惑这个问题:python元组,有人可以解释这种行为吗?
考虑代码片段:
>>> a = ([],[])
>>> a[0].append(1) # 1
>>> a
([1], [])
>>> a[0] += [2]
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
a[0] += [2]
TypeError: 'tuple' object does not support item assignment # 2
>>> a
([1, 2], []) # 3
>>>
我的问题是:
- 元组是为什么?(我知道我真的不明白python的不变性..)
- 如果
1
是可以接受的d,2
提高TypeError
的原因是什么? - 在
3
,a
被修改,那么提高TypeError
有什么意义?
谢谢
对于第一个,请参阅http://docs.python.org/3/reference/datamodel.html#objects-values-and-types-基本上,“元组是不可变的”只意味着“你不能添加,删除或者替换元组中的对象“,而不是”包含在元组中的对象也是不可变的“。 – delnan