• 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]