python的可变类型和不可变类型

本文深入解析Python中的数据类型,区分可变与不可变类型,如列表、字典为可变类型,数字、字符串、元组为不可变类型,并通过id()函数演示不同类型在内存中的变化特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python中数据类型有可变和不可变两种类型
数字、字符串、元组 是不可变类型
列表、字典 是可变类型
那么可变类型和不可变类型到底有什么区别?
我们可以借用 id() 比较内存地址的变化
可变类型
列表
在这里插入图片描述
列表的元素可变,也就是可以指向其他内存空间,字典同理。
不可变类型
数字
在这里插入图片描述
在经过加一后,变量 i 指向的内存事实上已经改变,也就是说加一操作并不是在原有的 6上加一,而是将 6 拿出来进行加一运算后,又放回去,而分配一个新的堆内存空间给结果 7,并让栈内存中的 i 变量指向 7。
这就体现了不可变类型的不可变性,6 是不可变的。

字符串
在这里插入图片描述
在尝试将字符串 str 中的 ‘H’ 通过赋值更改时,会出现异常,同样体现了不可变性
在这里插入图片描述
和数字加一操作一样,表面上似乎是 ‘Hello’ 发生了改变,事实上并没有,只是 str 的指向改变了

元组中的不可变性就有些不同了
当元组元素都是不可变类型时,体现了一种绝对的不可变性
在这里插入图片描述
当元素有可变类型时,元组发生了变化
在这里插入图片描述
也就是说,tuple 只是强调元素内存空间不变。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值