Python笔记之元组的相对不可变性

元组的相对不可变性

元组与多数Python集合(列表, 字典, 集,等待)一样,保存的是对象的引用。如果引用的元素是可变的,即元组本身不可变,元素依然可变。也就是说,元组的不可变性其实是指的是tuple数据结构的物理内容(即保存的引用)不可变,与引用的对象无关。

如示例1表明,元组的值会随着引用的可变对象的变化而变。元组中不可变的是元素发标识。

#示例1
>>> t1 = (1, 2, [30, 40])   #t1不可变,但是t1[-1]可变。
>>> t2 = (1, 2, [30, 40])   #构建元组t2,它的元素与t1一样。
>>> t1 == t2                #虽然t1和t2是不同的对象,但是二者相等——与预期相符。
True
>>> id(t1[-1])              #查看t1[-1]列表的标识。
1631417819656
>>> t1[-1].append(99)       #就地修改t1[-1]列表。
>>> t1
(1, 2, [30, 40, 99])
>>> id(t1[-1])              #t1[-1]的标识没变,只是值变了。
1631417819656
>>> t1 == t2                #现在,t1和t2不相等。
False

 

 

 


版权声明:本文为Don_Sherry原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。