python可变与不可变数据类型
一.名词解释
以下所有的内容都是基于内存地址来说的
- 不可变数据类型 :
变量在更改值的时候,需要开辟新内存的⾏为,此数据类型为 “不可变数据类型”,如strings, tuples, 和 numbers - 可变数据类型:
变量在更改值的时候,不需要开辟新内存的⾏为,此数据类型为 “可变数据类型”,如 list,dict
二.不可变数据类型
同一个变量a,改变它的值,会导致这个变量l的内存地址发生改变的行为,那么这个变量a的数据类型被称为“不可变数据类型”
>>> a = 1 # 赋值a=1, 实际上是变量a指向1的内存地址,看到a的内存地址与1的内存地址是一样的
>>> id(1)
4411075632
>>> id(a) #
4411075632
>>> a = 2 # 更改变量a=2,发现a的内存地址变成了2的内存地址
>>> id(2)
4411075664
>>> id(a)
4411075664
二.可变数据类型
同一个变量a,改变它的值,但这个变量a的内存地址不会变,那么这个变量a的数据类型被称为“可变数据类型”
>>> a = [1, 2, 3, 4]
>>> id(a)
4414889544
>>> a.append(5)
>>> print(a)
[1, 2, 3, 4, 5]
>>> id(a) # 可以看到列表中的值被改变了,但是内存地址没有变化
4414889544