【发布时间】:2013-12-14 14:40:00
【问题描述】:
我在 SO 上发现了一些关于 TypeError: 'tuple' object does not support item assignment 的问题,但我仍然对此感到困惑:
考虑一下代码sn-p:
>>> 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
>>>
我的问题是:
- 元组是不可变的,但是
1成功改变了它的值。为什么?(我知道我不太了解python的不可变性..) - 如果
1被接受,那么2提升TypeError的原因是什么? - 在
3中,a被修改了,那么提出TypeError有什么意义?
谢谢
【问题讨论】:
-
首先,见docs.python.org/3/reference/…——基本上,“元组是不可变的”仅表示“你不能在元组中添加、删除或替换对象”,而不是“元组中包含的对象是不可变的”也”。