Python 中可变与不可变对象

来源:互联网 发布:用python搭建知识图谱 编辑:程序博客网 时间:2024/05/21 23:51
Python 中变量没有类型,类型属于对象。可以理解Python中没有值传递,一切皆是对象的引用。

Python中的数据对象分为可变对象和不可变数据对象,可变和不可变又是指什么呢?
那么Python中哪些是不可变的对象,哪些又是可变的对象呢?

划分依据:
如果修改一个对象的内容修改前和修改后,该对象在内存地址中的地址并没有发生改变,那么该对象是可变的对象(即对象内容可以改变的)
如果一个对象修改前和修改后对象的地址发生改变了,那么该对象是不可变的对象(即对象的内容不可改变)

  • 不可变(immutable):int ,String、float、元组(tuple)

eg. 变量 a = 12再修改其值a = 1,这里相当于生成一个人对象a ,赋值1,再让a 指向它。a 的值没有被改变,只是生成一个新的a对象



上面对a重新复制后,a指向了一个新的对象,其值是不能修改的,修改意味着重新创建了一个同名对象,以前的对象引用作为垃圾被回收。
打印输出前后地址显示不同,说明a修改前后不在是一个对象了。


  • 可变(mutable):字典型(dictionary)、列表型(list)
变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。



la第二个元素修改前后,打印输出前后的地址没有发生改变。








原创粉丝点击