python元组的相对不可变性

探讨Python中元组的特性,即使元组本身不可变,但若包含可变对象如列表,则该对象的改变会影响元组的表现。通过实例演示元组内部引用的不变性与值的可变性。

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

下列栗子表明元组的值会随着引用的可变对象的变化而变。元组中不可变的是引用的标识。

 1 >>> t1 = (1, 2, [30, 40])
 2 >>> t2 = (1, 2, [30, 40])
 3 >>> t1 is t2
 4 False
 5 >>> t1 == t2
 6 True
 7 >>> id(t1[-1])
 8 139727093562696
 9 >>> t1[-1].append(99)
10 >>> t1
11 (1, 2, [30, 40, 99])
12 >>> id(t1[-1])
13 139727093562696
14 >>> t1 == t2
15 False

可见t1[-1]的标识没变,只是值变了。

转载于:https://www.cnblogs.com/cpl9412290130/p/10458096.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值