我们知道tuple
是不可变的。但与此同时,它可以包含可变实体。
假设我们有下一个tuple
:
x = (1, [1, 2])
让我们尝试改变第一个元素:
x[0] = 10
----> 1 x[0] = 10
TypeError: 'tuple' object does not support item assignment
是的。这也就不足为奇了。绝对预期的行为。
让我们尝试在我们的tuple
:
>>> x[1].append(3)
(1, [1, 2, 3])
因为我们将可变实体变为列表,所以没有任何错误。列表也有相同的参考。
现在让我们尝试通过+=
附加:
x[1] += [4]
----> 1 x[1] += [4]
TypeError: 'tuple' object does not support item assignment
>>> x
>>> Out[49]: (1, [1, 2, 3, 4])
虽然列表的TypeError
值已更改。我有点困惑。
这种二元行为的原因是什么?