Python的可变类型与不可变类型--基础知识
- Python的每个对象分为可变和不可变,主要类型中,数字,字符串,元组是不可变类型的, 列表,字典是可变的。
- 对不可类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其他变量引用原有对象的话(即引用计数为0),原有对象就会被回收)。
核心提示:
可变类型 Vs 不可变类型
可变类型(mutable):列表,字典
不可变类型(unmutable):数字,字符串,元组
重要:
#1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
#2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
通过以下实例进行分析:
不可变类型:
以int类型为例子:实际上i+=1 并不是真的在原有的int对象上+1,而是重新创建了一个value为3的的int对象,i引用这个新的对象。 i= 2 i+=1 print(i) #返回结果3 通过id函数查看变量i的内存地址进行验证: i= 2 i+=1 print(id(i),i) i+=1 print(id(i),i) #返回结果如下: 1352386288 3 1352386320 4
可变类型:
# 以list为例子,list在append之后,还是执行同个内存地址id,因为list是可变类型,可以再原处修改
a = [1,2,3] print(id(a),a) a.append(4) print(id(a),a) #返回结果如下 发现id没有变,这就是可变类型,值发生改变,id不变 35520840 [1, 2, 3] 35520840 [1, 2, 3, 4]