【发布时间】:2015-12-24 07:07:18
【问题描述】:
今天遇到的一个问题,实际测试了Python中元组的不变性:
采访者:元组在 Python 中是不可变的吗?
我:是的
采访者:那么
print(t1)这里打印的是什么?t1 = (4, 5) t1 = t1 + (91, 10) print(t1)我:
(4, 5, 91, 10)采访者:元组的不变性如何定义这种行为?
我:与不变性无关,
t1标签指的是一个新的元组。面试官:
>>> t = (1, 2, [3, 4]) >>> t[2] += [5, 6]接下来会发生什么?
我:
TypeError被提升采访者:之后
t的价值是多少?我:
(1, 2, [3, 4])或(1, 2, [3, 4, 5, 6])也许,不确定采访者:是什么让你认为值会变成
(1, 2, [3, 4, 5, 6]),如果我写了会发生什么>>> t[2] = t[2] + [5, 6]这次操作后
t2还是(1, 2, [3, 4, 5, 6])吗?
【问题讨论】:
-
是的,元组是不可变的,但它们可以保存对可变对象的引用。
-
元组作为容器是不可变的,这意味着你不能删除或添加项目,但它包含的项目可以改变。另请阅读:Why does
a_tuple[i] += [‘item’]raise an exception when the addition works?
标签: python python-2.7 python-3.x tuples immutability