当前位置: 首页 > backend >正文

python之浅拷贝深拷贝

文章目录

  • 潜拷贝(shallow copy)
  • 深拷贝(deep copy)

总结一下python的浅拷贝和深拷贝.

潜拷贝(shallow copy)

python中潜拷贝指的是:构造一个新的复合对象,然后将原对象中的对象引用插入其中
平常开发过程中潜拷贝是比深拷贝更常见的场景.
比如编程中使用到的一些基本的复合类型(list, dict等)是自带shallow copy函数的,比如下面的例子

from collections import dequel = [1,2,3]
l.copy()
s = set([1,2,3])
s.copy()
d = {'a':1,'b':2}
d.copy()
q = deque([1, 2, 3])
q.copy()

python官方有copy这个内置的模块来完成潜拷贝和深拷贝.如下例子

from collections import deque
import copy
from dataclasses import dataclass@dataclass
class Test:name: strage: intdef test2():l = [Test(name='a', age=1), Test(name='b', age=2)]l_copy = copy.copy(l)print(id(l))print(id(l_copy))l[0].name = 'a_update'print(l_copy[0].name == l[0].name)if __name__ == '__main__':test2()

输出

138121816082688
138121816084736
True

列表类型潜拷贝还可以使用分片语法比如l_copy = l[:]也是潜拷贝.

深拷贝(deep copy)

python中深拷贝是指:构造一个新的复合对象,然后递归地插入原对象中对象的副本
使用copy.deepcopy实现,如下例子:

from collections import deque
import copy
from dataclasses import dataclass@dataclass
class Test:name: strage: intdef test3():l = [Test(name='a', age=1), Test(name='b', age=2)]l_copy = copy.deepcopy(l)print(id(l))print(id(l_copy))l[0].name = 'a_update'print(l_copy[0].name == l[0].name)if __name__ == '__main__':test3()

输出结果:

123638090725824
123638090725952
False
http://www.xdnf.cn/news/17498.html

相关文章:

  • Java Selenium 自动打开浏览器保存截图
  • DevExpress ASP.NET Web Forms v25.1新版本开发环境配置要求
  • 操作系统1.5:操作系统引导
  • OpenHarmony概述与使用
  • ttyd终端工具移植到OpenHarmony
  • 大模型工程问题
  • 用vscode 里docker显示不出有容器和镜像 ?
  • [Shell编程] Shell 编程之免交互
  • 华为watch5心率变异性测量法的底层逻辑
  • Docker部署MySQL完整指南:从入门到实践
  • MyBatis插件开发与扩展:从原理到实战的完整指南
  • 阿里发布数字人模型echomimic_v3,在视频合成的基础上支持prompt输入~
  • 机器学习 - Kaggle项目实践(1)Titanic
  • 人工智能-python-机器学习- 欠拟合与过拟合:岭回归与拉索回归的应用
  • 【安全发布】微软2025年07月漏洞通告
  • SharePlay确保最佳游戏体验
  • 基恩士 CA CNX10U 视觉连接器REPEATER CA CN or CV- C 日本原装进口
  • 数字IC后端层次化Hierarchical Flow子系统Sub-System模块 block partition和pin assignment细节盘点
  • istio如何采集method、url指标
  • 飞算JavaAI vs 传统开发:效率与质量的双重突破
  • conda一键配置python开发环境
  • CI/CD的持续集成和持续交付
  • 在 Rocky Linux 9.2 上使用 dnf 安装 Docker 全流程详解
  • PyCATIA深度解析:基于装配截面自动化创建参考几何平面群的专业方案
  • Redis一站式指南二:主从模式高效解决分布式系统“单点问题”
  • windows运维
  • opencv:图像轮廓检测与轮廓近似(附代码)
  • 部署一个免费开源的博客系统
  • Gin 框架错误处理机制详解
  • 【Tomcat】企业级web应用服务器