Python 中可变与不可变对象

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第二个元素修改前后,打印输出前后的地址没有发生改变。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值