在python中,对象分为可变类型和不可变类型。这里的可变和不可变指的是对象在被创建是否能进行值更新操作。废话少说,直接上代码
- x=1
- print id(x)
- x+=1
- print id(x)
- y='s'
- print id(y)
- y+='s'
- print id(y)
代码执行后发现,x和y在执行更新操作后输出地id前后不一致,即对象发生了变化。实际上发生的是:更新操作导致创建了新对象,新对象关联到原来的变量名,旧的对象被丢弃,垃圾回收器会在适当时回收被丢弃的对象。对于这种更新导致产生新对象的类型就属于“不可变型”。
相反,“可变型”对象进行更新后,不会导致创建新对象,而是自身的值发生变化。
- x=[1,2,4]
- print id(x)
- x[1]=[5]
- print id(x)
代码执行后,列表x的id前后一致,但是值更新成功,说明是x对象本身的值发生变化,而不是创建了新的对象。
在python中,可变类型和不可变类型总结如下
分类 | python类型 |
可变类型 | 列表、字典 |
不可变类型 | 数字、字符串、元组 |