在python中,对象分为可变类型和不可变类型。这里的可变和不可变指的是对象在被创建是否能进行值更新操作。废话少说,直接上代码

 
  
  1. x=1 
  2. print id(x) 
  3. x+=1 
  4. print id(x) 
  5. y='s' 
  6. print id(y) 
  7. y+='s' 
  8. print id(y) 

代码执行后发现,x和y在执行更新操作后输出地id前后不一致,即对象发生了变化。实际上发生的是:更新操作导致创建了新对象,新对象关联到原来的变量名,旧的对象被丢弃,垃圾回收器会在适当时回收被丢弃的对象。对于这种更新导致产生新对象的类型就属于“不可变型”。

相反,“可变型”对象进行更新后,不会导致创建新对象,而是自身的值发生变化。

 
  
  1. x=[1,2,4
  2. print id(x) 
  3. x[1]=[5
  4. print id(x) 

代码执行后,列表x的id前后一致,但是值更新成功,说明是x对象本身的值发生变化,而不是创建了新的对象。

在python中,可变类型和不可变类型总结如下

分类python类型
可变类型列表、字典
不可变类型数字、字符串、元组