浅拷贝和深拷贝

假如当操作不可变类型的字符串时
一个变量等于另外一个变量 这时只是作为了引用 两个变量所指内存地址是一样的
例如啊 a = “alex” b = a 这时b就指向了a的内存地址(b引用了a的内存地址)这时如果给a重新赋值 a就指向了新的内存地址 而b还是指向原来a所所指的地址 因为如果是不可变类型的话在对对象进行操作的时候因为本身是不可变的所以他要重新申请一块区域

当操作可变类型的时候假如是一个列表
在对对象进行操作的时候因为本身是可变的的所以他不需要新创建一块区域 只需在原来的地址上进行操作
这时如果变量1 = [1,2,3] 变量2 = 变量1
变量2就指向了变量1所指向的那块内存
如果变量1进行加减元素 变量2也会跟着发生变化 因为两个变量所指向的都是同一块内存

可变类型
浅拷贝是新创建了一个跟原对象一样的类型 但是他的内容是对原对象元素的引用 这个拷贝的对象本身是新的但内容不是
浅拷贝只拷贝第一层数据

浅拷贝是对一个对象的定层拷贝
即拷贝了引用并没有拷贝内容

深拷贝是指在内存中将所有的数据递归拷贝重新创建一份

浅拷贝对于不可变类型 不会拷贝仅仅是指向
深拷贝对于不可变类型如果不可变类型中还欠套着可变的深拷贝就会拷贝 如果不是它也是指向 浅拷贝只要是不可变类型都是指向

切片[:]属于浅拷贝
字典中的copy方法也是浅拷贝

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值