一、定义:

不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变

可变数据类型    :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变

所以说,可不可变是针对内存里存放的内容是否可变而言的。

总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变

二、数据类型的分类

数据类型

可变/不可变

整型

不可变

字符串

不可变

元组

不可变

列表

可变

集合

可变

字典

可变

python中数据类型有:整型,字符串,元组,集合,列表,字典。

1、整型

>>> a=3

>>> id(a)

13503544

>>> a=4

>>> id(a)

13503520

当数据发生改变后,变量的内存地址发生了改变,那么整型就是不可变数据类型。

2、字符串

>>> i='hello'

>>> id(i)

140310959433264

>>> i='yyz'

>>> id(i)

15512680

当数据发生改变后,变量的内存地址发生了改变,那么字符串就是不可变数据类型。

3、元组

>>> a=(1,3,[2,5])

>>> id(a)

140310959360912

>>> a[2].append(6)

>>> print(a)

(1, 3, [2, 5, 6])

>>> id(a)

140310959360912

从元组的定义就可以得出,元组不可变,修改列表的值,列表是可变数据类型,所以列表的地址没有改变,列表在元组里,所以元组也没有改变,那么就可以得出,元组是不可变数据类型。

4、集合

>>> j={1,2,3}

>>> id(j)

140310959623424

>>> j.add(7)

>>> id(j)

140310959623424

集合我们常用来进行去重和关系运算,集合是无序的。

可以看出,虽然集合数据发生改变,但是内存地址没有发生了改变,那么集合就是可变数据类型。

5、列表

>>> y=[1,2,3]

>>> id(y)

15436472

>>> y.append(34)

>>> id(y)

15436472

虽然列表数据发生改变,但是内存地址没有发生了改变,那么列表就是可变数据类型。

6、字典

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的。但是在3.6版本后,字典开始是有序的,这是新的版本特征。

字典的key值可以是整型,字符串,元组,但是不可以是列表,集合,字典。

>>> a={'1':4,'2':5}

>>> id(a)

14397488

>>> a.clear()

>>> id(a)

14397488

可以看出,字典数据改变,内存地址没有变化,那么字典就是可变数据类型。