Python-深拷贝与浅拷贝
直接赋值:其实就是对象的引用(别名)。
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象,只是对拷贝子对象的引用。
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
说白了,浅拷贝与深拷贝最大的区别就是拷贝的是地址还是值。
举个栗子:
- 浅拷贝就是你和你的前女友,分手没分干净,还有一些暧昧,她/他出事了,你还是要去管,藕断丝连ing;
- 深拷贝就是杀父之仇,夺妻之恨,坚决不能心软,一刀两段,对方是死是活和你毫无关系
进入正题
import copyclass MobilePhone:def __init__(self, cpu, screen):self.cpu = cpuself.screen = screenclass CPU:def calcilate(self):print('算术')print('CPU对象:', self)class Screen:def show(self):print('显示一个好看的画面')print('screen对象', self)c1 = CPU()
c2 = c1
print(c1) # <__main__.CPU object at 0x00000201C5BB2FD0>
print(c2) # <__main__.CPU object at 0x00000271DAFBE3C8># 测试浅拷贝
s1 = Screen()
m1 = MobilePhone(c1, s1)
m2 = copy.copy(m1)print(m1) # <__main__.MobilePhone object at 0x00000188F230E668>
print(m2) # <__main__.MobilePhone object at 0x00000188F230E9B0>
print(m1.cpu) # <__main__.CPU object at 0x000001A50EC23278>
print(m2.cpu) # <__main__.CPU object at 0x000001A50EC23278>
print(m1.screen) # <__main__.Screen object at 0x000001A50ECCE588>
print(m2.screen) # <__main__.Screen object at 0x000001A50ECCE588>print('--------------')# 测试深拷贝
m3 = copy.deepcopy(m1)
print(m1) # <__main__.MobilePhone object at 0x000002AACD79E6A0>
print(m3) # <__main__.MobilePhone object at 0x000002C64BD75908>
print(m1.cpu) # <__main__.CPU object at 0x000002C64BCA3278>
print(m3.cpu) # <__main__.CPU object at 0x000002C64BD758D0>
print(m1.screen) # <__main__.Screen object at 0x000002C64BD4E5C0>
print(m3.screen) # <__main__.Screen object at 0x000002C64BD759E8>
Python-深拷贝与浅拷贝相关推荐
- python深拷贝和浅拷贝的使用场景_Python深拷贝和浅拷贝使用方法
Python深拷贝和浅拷贝使用方法 发布时间:2020-06-06 16:52:01 来源:亿速云 阅读:182 这篇文章运用了实例代码展示Python深拷贝和浅拷贝使用方法,代码非常详细,可供感兴趣 ...
- 【转载】图解 Python 深拷贝和浅拷贝
伯乐在线 > Python - 伯乐在线 > 所有文章 > 基础知识 > 图解 Python 深拷贝和浅拷贝 图解 Python 深拷贝和浅拷贝 2015/09/28 · 基础 ...
- python怎么避免浅拷贝_深度解读Python深拷贝与浅拷贝问题
Illustrations by Leon Tukker ♚ 作者:PayneLi,Python全家桶,主要讲述数据挖掘.机器学习和深度学习领域的前沿技术,同时还会推荐一些行业最新论文.技术专家的经验 ...
- 【233】python—深拷贝与浅拷贝的区别
♣ 题目部分(原文见公众号:python宝) python宝 https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU5NjI ...
- 一文了解Python深拷贝与浅拷贝问题
https://www.toutiao.com/a6661446735224635907/ 在平时工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就 ...
- Python深拷贝和浅拷贝的区别
首先深拷贝和浅拷贝都是对象的拷贝,都会生成一个看起来相同的对象,他们本质的区别是拷贝出来的对象的地址是否和原对象一样,也就是地址的复制还是值的复制的区别. 什么是可变对象,什么是不可变对象: 可变对象 ...
- python深拷贝和浅拷贝的使用场景_深拷贝、浅拷贝的理解与使用场景
什么是深拷贝.浅拷贝? 通俗解释:深拷贝是内容拷贝,浅拷贝是地址拷贝 区别点: 深拷贝会创建一个新的内存空间,拷贝的值是一样的,但是内存地址不一样. 浅拷贝只是拷贝指向原来对象的地址,使原对象的引用计 ...
- python——深拷贝与浅拷贝的区别
一.浅拷贝 原列表 data1=[8,24,[2,30,35]] 浅拷贝后的列表 data2=data1.copy()原列表的内存地址 print(id(data1)) 2726096606848 拷 ...
- 图解python_图解Python深拷贝和浅拷贝
Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 对象赋值 直接看一段代码: will ...
- Python 深拷贝和浅拷贝
Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 对象赋值 直接看一段代码: will= ...
最新文章
- 【 SIMULATION 】RMSE Comparison of Linear Approaches for TOA - Based Positioning
- golang signal 信号简介
- tomcat拒绝访问是为什么_Tomcat中的connectTimeout和慢攻击
- ASP.NET Core快速入门(第5章:认证与授权)--学习笔记
- Java核心类库篇1——简介
- 泰克示波器查眼图_泰克示波器自带上位机软件功能介绍,了解一下
- sequelize常见操作使用方法
- 牛客网matlab怎么输入数据,从牛客上找的面经
- 在MacOS和iOS系统中使用OpenCV
- 【操作系统/OS笔记05】非连续内存分配:分段、分页、页表
- Linux(CentOS7)下安装mysql
- 【面经】字节AI Lab-NLP算法热乎面经
- DDA算法--计算机图形学
- 数字图像处理(dip)
- Edge(chrome内核)浏览器Linux版本初体验
- Android USB通信开发总结和热敏打印机开发实例解析
- react ssr php,从零开始搭建React同构应用(三):配置SSR
- Word 分节符的删除(不改变文章格式)
- Windows Hello安装和体验
- python分割图片数字_python实现图片中文字分割效果