python的更新模型


在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类型

可变类型

列表、字典

不可变类型

数字、字符串、元组

 作者“clopopo”

相关内容

    暂无相关文章

评论关闭