一、定义:
以下解释是相对于内存地址来说的:
不可变数据类型: 数据类型对应变量的值发生了改变,对应的内存地址发生改变
可变数据类型 :数据类型对应变量的值发生了改变,对应的内存地址不发生改变
所以说,可不可变是针对内存里存放的内容是否可变而言的。
总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变
二、数据类型的分类
数据类型 | 可变/不可变 |
整型 | 不可变 |
字符串 | 不可变 |
元组 | 不可变 |
列表 | 可变 |
集合 | 可变 |
字典 | 可变 |
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
可以看出,字典数据改变,内存地址没有变化,那么字典就是可变数据类型。