赞
踩
python中数据类型有可变和不可变两种类型
数字、字符串、元组 是不可变类型
列表、字典 是可变类型
那么可变类型和不可变类型到底有什么区别?
我们可以借用 id() 比较内存地址的变化
可变类型
列表
列表的元素可变,也就是可以指向其他内存空间,字典同理。
不可变类型
数字
在经过加一后,变量 i 指向的内存事实上已经改变,也就是说加一操作并不是在原有的 6上加一,而是将 6 拿出来进行加一运算后,又放回去,而分配一个新的堆内存空间给结果 7,并让栈内存中的 i 变量指向 7。
这就体现了不可变类型的不可变性,6 是不可变的。
字符串
在尝试将字符串 str 中的 ‘H’ 通过赋值更改时,会出现异常,同样体现了不可变性
和数字加一操作一样,表面上似乎是 ‘Hello’ 发生了改变,事实上并没有,只是 str 的指向改变了
元组中的不可变性就有些不同了
当元组元素都是不可变类型时,体现了一种绝对的不可变性
当元素有可变类型时,元组发生了变化
也就是说,tuple 只是强调元素内存空间不变。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。