python元组赋值(如果元组可变)

时间:2018-10-25 02:17:29

标签: python tuples

我是python的新手。据说元组是不变的,但是为什么我们可以做这样的事情。即连接并更改原始值

a=(1,2,3)
>>> a
(1, 2, 3)
>>> b=(4,5,6)
>>> b
(4, 5, 6)
>>> a=a+b
>>> a
(1, 2, 3, 4, 5, 6)

在这种情况下,我们不是要更改元组a中的值吗?

1 个答案:

答案 0 :(得分:3)

不,您要创建一个新的元组。考虑。

>>> a = (1, 2, 3)
>>> a1 = a

现在a1a是同一个元组。不仅看起来相似;它们是相同。然后

>>> b = (4, 5, 6)
>>> a = a + b

现在a(1, 2, 3, 4, 5, 6)。我们是否更改了我们制作的第一个元组?让我们问一下Python。

>>> a
(1, 2, 3, 4, 5, 6)
>>> a1
(1, 2, 3)

不,原始元组保持不变。

这种区别很重要。您创建了一个新的元组,并偶然给它取了相同的名称。这意味着,如果您要编写一个具有巨大对象层次结构的复杂程序,那么您对a所做的更改不会破坏依赖的任何其他对象或代码。 a的先前值。它只会破坏您控制的特定a变量。另一方面,如果我们有一个列表a = [1, 2, 3]并开始追加到列表中,那么碰巧持有对该列表的引用的任何其他对象现在都将看到更改,从而导致一定距离的混乱错误