怎么理解python指针拷贝,浅拷贝和深拷贝
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,本篇内容主要讲解"怎么理解python指针拷贝,浅拷贝和深拷贝",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么理解python指针拷贝,浅拷贝和深拷贝"
千家信息网最后更新 2025年01月17日怎么理解python指针拷贝,浅拷贝和深拷贝
本篇内容主要讲解"怎么理解python指针拷贝,浅拷贝和深拷贝",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么理解python指针拷贝,浅拷贝和深拷贝"吧!
首先对于不可变类型int,string,float,tuple,并不用担心拷贝问题,可以认为每次拷贝时候都是重新创建内存空间来存放,修改新的值不会影响原来的;两个除了值一样没有相关。
对于可变类型Dict set list,还有实例对象,类一些,拷贝时候要考虑指针拷贝,浅拷贝和深拷贝的情况。
- 指针拷贝:就是通常A = B,对于可变类型,这个复制是多了个指针,两个A,B都是指向同一个内存空间,任何一个修改都会影响其他的。
class TreeNode: def __init__(self, x): self.val = x self.left = None def __str__(self): return "[{}:{}]".format(self.val, self.left)NodeA = TreeNode('A')NodeB = TreeNode('B')NodeA.left = NodeBprint(NodeA)NodeC = NodeAprint(NodeC)print('指针复制,更新NodeC,同时更新原来NodeA')NodeC.val = 'C'NodeC.left = Noneprint(NodeA)print(NodeC)
结果是:
[A:[B:None]][A:[B:None]]指针复制,更新NodeC,同时更新原来NodeA[C:None][C:None]
- 浅复制:需要import copy 库实现,这里是用了新的内存空间存放复制内容。但是如果复制内容里有指向其他可变类型,该引用还是指向那个可变类型原来内存空间。
import copyNodeA = TreeNode('A')NodeB = TreeNode('B')NodeA.left = NodeBprint(NodeA)NodeC = copy.copy(NodeA)print(NodeC)print('浅复制,更新NodeC,不会更新原来NodeA,但是更新引用NodeC.left, 会影响NodeA.left')NodeC.val = 'C'NodeC.left.val = 'Cleft'print(NodeA)print(NodeC)
结果:
[A:[B:None]][A:[B:None]]浅复制,更新NodeC,不会更新原来NodeA,但是更新引用NodeC.left, 会影响NodeA.left[A:[Cleft:None]][C:[Cleft:None]]
- 深复制:需要import copy 库实现,这里是用了新的内存空间存放复制内容;如果里面有指针指向可变类型空间,也会被一起复制。
import copyNodeA = TreeNode('A')NodeB = TreeNode('B')NodeA.left = NodeBprint(NodeA)NodeC = copy.deepcopy(NodeA)print(NodeC)print('深复制,更新NodeC,不会更新原来NodeA,更新NodeC.left, 不会影响NodeA.left')NodeC.val = 'C'NodeC.left.val = 'Cleft'print(NodeA)print(NodeC)
结果:
[A:[B:None]][A:[B:None]]深复制,更新NodeC,不会更新原来NodeA,更新NodeC.left, 不会影响NodeA.left[A:[B:None]][C:[Cleft:None]]
到此,相信大家对"怎么理解python指针拷贝,浅拷贝和深拷贝"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
拷贝
更新
指针
空间
类型
可变
影响
内存
内容
指向
结果
两个
同时
时候
学习
实用
更深
不用
兴趣
实例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
游戏服务器gm管理
网络安全本质在于
计算机网络技术的社会需求
网络安全法内容安全
国产化服务器基础知识
用手机如何做服务器
软件开发沉思录书籍
万兴科技互联网市场
终结战场总是显示服务器异常
饥荒联机服务器改本地
高级数据库阶段的主要特点
买一台服务器多少钱
山东小虎鲸网络技术有限公司
方舟盗版建非官方服务器
2022春考网络技术技能考什么
java 表格数据库
数据库设计作品展示
大兴区综合软件开发介绍
java为什么要学数据库
gis软件开发央企公司
网络安全法内容安全
sql数据库批量备份
网络技术标准第六代
服务器租聘
网络安全工程师成长经典案例
戴尔服务器f10解锁
河西学院网络安全课表
当服务器有高防护怎么攻击
长沙苹果软件开发费用
软件开发管理工具分类