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]

 

posted @ 2017-12-05 16:05  Egrep  阅读(1007)  评论(0编辑  收藏  举报