0
点赞
收藏
分享

微信扫一扫

Python中的深拷贝与浅拷贝


Python 进阶篇-系列文章全篇

🍑 ​​Linux操作系统与常用命令​​ 🍑 Linux系统性能定时监控升级,源码可复制
🍑 tcp网络程序的实现步骤,看这个就够了
🍑 http请求与响应,tcp3次握手&四次挥手
🍑 模拟浏览器实现,服务端基础框架搭建
🍑 Python进阶:利用线程实现多任务
🍑 Python进阶:进程的状态及基本操作
🍑 Python进阶:一文搞懂迭代器、生成器、协程(附案例)
🍑 数据库:了解MySQL数据类型、SQL命令
🍑 从零开始学SQL:where条件查询与连接
🍑 Python网络开发基础,实现udp聊天器小案例
🍑 多任务版TCP服务端程序开发案例+源码
🍑 【图文教程详解】Ubuntu的两种安装方式
🍑 Python中的深拷贝与浅拷贝

文章目录

  • ​​Python 进阶篇-系列文章全篇​​
  • ​​1. python中可变和不可变​​
  • ​​2. 简单可变类型拷贝​​
  • ​​3. 复杂可变类型拷贝​​
  • ​​4. 简单不可变类型拷贝​​
  • ​​5. 复杂不可变类型拷贝​​
  • ​​6. 切片拷贝、字典拷贝​​

1. python中可变和不可变

  • 可变类型(mutable),创建后可以继续修改对象的内容(值)

字典、列表

  • 不可变类型(unmutable) ,一旦创建就不可修改的对象(值)

数字, 字符串,元组

当内容发生修改,计算机重新分配一块内存空间

2. 简单可变类型拷贝

  • 深拷贝:
  • 会产生新的空间
  • 能够保持各自的独立性
  • 如果拷贝的对象,子对象也会拷贝(产生新的空间)
  • 浅拷贝
  • 不会产生新的空间
  • 源对象和副本对象指向同一个空间
  • 如果拷贝的对象,子对象不会拷贝(不会产生新的空间)
  • 简单可变类型的拷贝总结:

简单可变类型的数据不管深拷贝还是浅拷贝,都会产生新的空间,而且保持各自的独立性

3. 复杂可变类型拷贝

  • 复杂可变类型的深浅拷贝问题
  • 浅拷贝,拷贝的是顶层对象的值,子对象不会拷贝(只是引用子对象)
  • 深拷贝,拷贝的顶层对象和对象的子对象,子对象会产生新的内存空间

4. 简单不可变类型拷贝

  • 简单不可变类型
  • copy() 浅拷贝,副本和源指向同一个空间
  • deepcopy() 浅拷贝,副本和源指向同一个空间

5. 复杂不可变类型拷贝

  • 复杂不可变类型的拷贝问题
  • 浅拷贝, 直接引用
  • 深拷贝,看数据具体是可变还是不可变的,如果数据是可变的,会产生新的空间,保持数据的独立性

6. 切片拷贝、字典拷贝

  • 切片拷贝: 浅拷贝(如果是简单可变类型,底层会产生新的空间)
  • 字典拷贝: 浅拷贝


举报

相关推荐

0 条评论