深拷贝、浅拷贝和引用

引用

  • 在python中,值是靠引用来传递来的。

  • 我们可以用id()来判断两个变量是否为同一个值的引用。
    在这里插入图片描述

  • 上图:引用就是上边的这三个变量指向了同一个内存的地址。

可变类型和不可变类型

  • 可变类型(修改数据,内存地址不会发生变化)有: 列表、字典、集合
  • 不可变类型(修改数据,内存地址必定发生变化)有: 数字、字符串、元组

引用与拷贝之间的区别

在这里插入图片描述

列表是怎么存数据的

  • 其实列表存的并不是真正的数据,存的只是数据的地址。
    在这里插入图片描述

深拷贝与浅拷贝的区别

简单理解
浅拷贝:快捷方式
深拷贝:ctrl + c, ctrl + v
在这里插入图片描述

深拷贝

  • 就是递归所有的数据进行重新创建 。
  • 作用:保证数据的独立性。
  • 缺点:比较占内存。
    在这里插入图片描述

浅拷贝

  • 最外层的结构复制创建,里面的数据还是引用原先的数据,类似于快捷方式。

在这里插入图片描述

深浅拷贝的特殊情况

  • 不可变类型不管是什么拷贝都是引用
    在这里插入图片描述
  • 常用的api基本上都是浅拷贝(省内存嘛)
    在这里插入图片描述

再理解下

在这里插入图片描述
在这里插入图片描述

  • 深拷贝:主要目的就是保证数据的独立性

如果全部都是不可变类型,那么深拷贝就没有必要取复制一份,
如果中间有一个数据是可变的,那就没办法保证数据的独立性,
工作中不会这么写。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值