可变数据类型:列表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