python 可变数据类型和不可变数据类型

可变数据类型:列表list和字典dict,但是字典中的key值必须是不可变类型

不可变数据类型:整型int、浮点型float、字符串型string和元组tuple。

1.区别:

1)不可变数据类型如下:

x=1
>>> id(x)
1484811744
>>> y=1
>>> id(y)
1484811744
x=2
>>> id(x)
1484811776
>>> y=2
>>> id(y)
1484811776
>>> z=y
>>> id(z)
1484811776

value改变,id也跟着改变。

2)可变数据类型如下:

a=[12,'cf']
>>> id(a)
48120456
a=[12,'cf']
>>> id(a)
48210952
>>> a.append(45)
>>> id(a)
48210952
a+=[2]
>>> a
[12, 'cf', 45, 2]
>>> id(a)
48210952

id不变的情况下,value可改变。

python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

参考:https://wenku.baidu.com/view/860e60d070fe910ef12d2af90242a8956becaae8.html

猜你喜欢

转载自blog.csdn.net/a18353365031/article/details/80079368