python3可变与不可变数据类型
Python3中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Dictionary(字典)
- Tuple(元组)
- Set(集合)
我理解的可变就是当一个变量创建时,在内存中申请一块空间用于存放对象,这个被申请的内存空间地址中的对象是可以改变的。当对这个对象进行一系列的操作时,这个内存空间地址不会改变,只会增加或缩减。如果这个对象是不可变的,那么在对对象进行操作时,必须在内存中的另外一个地方重新申请一块区域来存放操作后的对象。而老的内存空间会被python的垃圾回收机制处理掉。
具体的python内存相关知识请参考:http://www.cnblogs.com/fujiangong/p/5978247.html
不可变数据类型:
Number(数字)、String(字符串)、Tuple(元组)
实例:
>>> x = 1 >>> y = x >>> x,y (1, 1) #使用内置函数id查看x,y的内存空间地址,可以看到x,y指向的同一个内存空间地址 >>> id(x),id(y) (1982197552, 1982197552) #对变量x进行操作 >>> x += 1 #查看x,y的值,可看到x指向的对象已经改变 >>> x,y (2, 1) #再次查看x,y指向的内存空间地址,发现x指向的内存空间已经改变。这是因为变量x和变量y属于不可变数据类型:整数数字 >>> id(x),id(y) (1982197584, 1982197552)
可变数据类型:
List(列表)、Dictionary(字典)
实例:
>>> lst = [1,2,3,4] #查看lst的内存空间位置 >>> id(lst) 798098221256 #对lst进行添加操作 >>> lst.append(5) >>> lst [1, 2, 3, 4, 5] #再次查看lst的内存空间,可以发现虽然lst指向对象的内容发生了改变,但是lst的内存空间地址并没有改变 >>> id(lst) 798098221256