前言
python与C/C++不一样,它的变量使用有自己的特点,当初学python的时候,一定要记住“一切皆为对象,一切皆为对象的引用”这句话,其实这个特点类似于JAVA,所以在python里面大家也不用担心类似于C/C++中的指针的复杂问题, 在python中数据分为可变数据类型,不可变数据类型。
所以在学习python过程中我们一定会遇到不可变数据类型和可变数据类型。下面话不多说了,来一起看看详细的介绍吧
1.名词解释
以下所有的内容都是基于内存地址来说的。
不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。 可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变
2.数据类型分类
在python中数据类型有:整型,字符串,元组,集合,列表,字典。接下来我们用例子来一一查看他们分别属于不可变数据类型还是可变数据类型。
2.1 整型
a = 1print(id(a),type(a))a = 2print(id(a),type(a))1912499232 <class 'int'>1912499264 <class 'int'>
我们可以发现,当数据发生改变后,变量的内存地址发生了改变,那么整型就是不可变数据类型。
2.2 字符串
b = 'djx'print(id(b),type(b))b = 'djx1996'print(id(b),type(b))535056476344 <class 'str'>535056476624 <class 'str'>
我们可以发现,当数据发生改变后,变量的内存地址发生了改变,那么字符串就是不可变数据类型。
2.3 元组
元组被称为只读列表,即数据可以被查询,但不能被修改,但是我们可以在元组的元素中存放一个列表,通过更改列表的值来查看元组是属于可变还是不可变。
c1 = ['1','2']c = (1,2,c1)print(c,id(c),type(c))c1[1] = 'djx'print(c,id(c),type(c))result:(1, 2, ['1', '2']) 386030735432 <class 'tuple'>(1, 2, ['1', 'djx']) 386030735432 <class 'tuple'>
我们可以发现,虽然元组数据发生改变,但是内存地址没有发生了改变,但是我们不可以以此来判定元组就是可变数据类型。我们回头仔细想想元组的定义就是不可变的。我们修改了元组中列表的值,但是因为列表是可变数据类型,所以虽然在列表中更改了值,但是列表的地址没有改变,列表在元组中的地址的值没有改变,所以也就意味着元组没有发生变化。我们就可以认为元组是不可变数据类型,因为元组是不可变的。
2.4 集合
新闻热点
疑难解答