在学习python过程中我们⼀定会遇到不可变数据类型和可变数据类型。以下所有的内容都是基于内存地址来说的。
不可变数据类型: 当该数据类型的对应变量的值发⽣了改变,那么它对应的内存地址也会发⽣改变,对于这种数据类型,就称不可变数据类型。 可变数据类型 :当该数据类型的对应变量的值发⽣了改变,那么它对应的内存地址不发⽣改变,对于这种数据类型,就称可变数据类型。 总结:不可变数据类型更改后地址发⽣改变,可变数据类型更改地址不发⽣改变
Python有六种数据类型:数字类型、字符串类型、列表类型、元组类型、字典类型和集合类型其中不可变类型包括三种:数字类型、字符串类型和元组类型剩余三种为可变类型:列表类型、字典类型和集合类型可变类型:
可以修改对象的的值,修改后对象的内存地址不变(变量与内存地址链接:)可变类型包括:列表、字典、可变集合>>> s = [1, 2, 3, 4, 5]>>> id(s)
2115225773704>>> s[2] = \"a\">>> s
[1, 2, 'a', 4, 5]>>> id(s)
2115225773704
>>> d = {\"name\": \"bone\", \"age\": 26}>>> id(d)
2115223112656>>> d[\"age\"] = 25>>> d
{'name': 'bone', 'age': 25}>>> id(d)
2115223112656>>> a = {1, 2, 3}>>> id(a)
2115225769128>>> a.add(4)>>> id(a)
2115225769128>>> a{1, 2, 3, 4}不可变类型
值变了,内存地址就变了,等于重新定义
在尝试修改对象元素时,实际上是重新开辟了内存空间来存储的不可变类型有:数值、元组、字符串、不可变集合
对于不可变类型的对象,他们都没有涉及到修改的⽅法,尝试使⽤就会报错>>> a = (1,2,3)>>> a[1] = 2
Traceback (most recent call last): File \" TypeError: 'tuple' object does not support item assignment>>> a = \"bone\">>> a[1: 3] = \"x\" Traceback (most recent call last): File \" TypeError: 'str' object does not support item assignment>>> a = frozenset({1, 2, 3})>>> a frozenset({1, 2, 3})>>> id(a) 2115225768456>>> a.add(4) Traceback (most recent call last): File \" AttributeError: 'frozenset' object has no attribute 'add'
因篇幅问题不能全部显示,请点此查看更多更全内容