根据内容,可以将元组视为可变和不可变

时间:2014-09-05 18:40:50

标签: python

我正在经历python language reference,我遇到了以下情况:

  

当我们谈论容器的可变性时,只有身份   隐含的是直接包含的对象。所以,如果是不可改变的   容器(像元组一样)包含对可变对象的引用   如果更改了可变对象,则值会更改。

我是否正确认为元组可以根据它包含的内容被认为是可变的和不可变的?例如,如果一个元组只包含字符串,那么它可以是不可变的,如果它包含至少一个像列表一样的可变引用,那么元组本身就是可变的。

3 个答案:

答案 0 :(得分:5)

所有tuple都包含一个固定的引用列表。这些引用无法更改,因此这会使tuple不可变。引用的对象是否可变是另一个故事,但这超出了tuple的范围,因此如果tuple引用可变对象,则{{1}}可以变为不可能是不准确的。

答案 1 :(得分:1)

这通常不是概念化的方式。元组总是不可变的;它包含的对象可能是也可能不是可变的。同样地,如果你有一个防火箱,并且你把纸放在里面,那么即使没有纸张,箱子仍然是防火的(因此整个箱纸组合可以被认为是非防火的)。

答案 2 :(得分:1)

  

我认为元组既可变又不可变是正确的   基于它包含的东西?

考虑这样一个事实,即元组包含具有明确标识符的固定大小的对象。这些对象都不能用不同的对象替换。但这并不意味着对象的内容无法改变。

从技术上讲,如果

T =(O 1 ,O 2 ,O 3 .. O n ),其中O 1 到O n 是某些对象,并且在元组T的生命周期内,你不能替换这些对象中的一个或多个O i < / sub>与一些其他对象O j 其中i&lt;&gt;学家但是O i 可能会发生变异。