python元组字典底层实现_关于python中元组、字典的可变性。

你想当然地对“不可变序列”这个词语产生了误解。

首先我们要理解,何为“不可变对象”。

objects whose value is unchangeable once they are created are called immutable.

翻译过来,如果一个对象的value不可改变,那么该对象就是“不可变”的。

然后我们思考下,序列的value是什么东西。

Some objects contain references to other objects; these are called containers. Examples of containers are tuples, lists and dictionaries. The references are part of a container's value.

翻译过来,序列/容器的value就是该序列中的“元素的id”。是元素的id,而不是元素的value,懂了吗?还不懂就看python官方手册的《Data model》章节。

>>> foo=([1,2], [3,4]) #包含可变对象的【不可变序列】

>>> [id(i) for i in foo] #之中所有元素的id,就是【不可变序列】的value

[1747679411912, 1747679411848]

>>> foo[0][0]=5 #修改【不可变序列】的元素的value,而非修改【不可变序列】的value

>>> foo

([5, 2], [3, 4])

>>> [id(i) for i in foo] #【不可变序列】的value没有改变

[1747679411912, 1747679411848]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值