可变类型与不可变类型对象
-
概念
对象在内存中存储了三个数据:
- id(标识),就是内存地址,相当于C的指针
- type(类型),数据类型
-
value(对象值),对象存储的内容
例如说,一个整型对象——1,或者说一个字符对象‘a’,它们都具有上述三个数据存储在内存中。
顾名思义,可变类型就是允许改变对象的值(内容),不可变类型即相反。
而可变类型对象与不可变类型对象的具体区别在于对象本身是否可变,这涉及到对象的地址问题。
-
分类
可变类型:List、Dictionary、Set
不可变类型对象:int、float、bool、String、tuple(限于无数组的元组)
-
举例
可变类型举例:
a=[1,2,3]
print(f'初始的列表:{a}')
a[2]=4
print(f'修改的列表:{a}')
输出结果:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SNwMTO4MWY3kTNhVWY2IzYwMzYxMGN0kDNxY2NjJTNi9CX4AzLcVDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
不可变类型举例:
a=(1,2,3)
a[1]=4
其元组内容对象组成:
-
地址问题
可变类型和不可变类型的对象,是对象的地址绑定数值是否可修改的问题,对于可变类型的对象,它的值(value)改变而标识(id)不会改变,而不可变类型对象一旦被创建,将不再可以改变ID对应的值。
① 针对整数型对象 2,3,4
a=2
print(f' 整数型对象2的id值为{id(2)}')
print(f'整型类型变量a初始id值:{id(a)}')
b=3
print(f' 整数型对象3的id值为{id(3)}')
print(f'整型类型变量b初始id值:{id(b)}')
a=4
print(f' 整数型对象4的id值为{id(4)}')
print(f'整型类型变量a修改id值:{id(a)}')
b=a
print(f'整型类型变量b修改id值:{id(a)}')