• 直接赋值:其实就是对象的引用(别名)。

  • 浅拷贝(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-深拷贝与浅拷贝相关推荐

  1. python深拷贝和浅拷贝的使用场景_Python深拷贝和浅拷贝使用方法

    Python深拷贝和浅拷贝使用方法 发布时间:2020-06-06 16:52:01 来源:亿速云 阅读:182 这篇文章运用了实例代码展示Python深拷贝和浅拷贝使用方法,代码非常详细,可供感兴趣 ...

  2. 【转载】图解 Python 深拷贝和浅拷贝

    伯乐在线 > Python - 伯乐在线 > 所有文章 > 基础知识 > 图解 Python 深拷贝和浅拷贝 图解 Python 深拷贝和浅拷贝 2015/09/28 · 基础 ...

  3. python怎么避免浅拷贝_深度解读Python深拷贝与浅拷贝问题

    Illustrations by Leon Tukker ♚ 作者:PayneLi,Python全家桶,主要讲述数据挖掘.机器学习和深度学习领域的前沿技术,同时还会推荐一些行业最新论文.技术专家的经验 ...

  4. 【233】python—深拷贝与浅拷贝的区别

    ♣ 题目部分(原文见公众号:python宝) python宝 https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU5NjI ...

  5. 一文了解Python深拷贝与浅拷贝问题

    https://www.toutiao.com/a6661446735224635907/ 在平时工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就 ...

  6. Python深拷贝和浅拷贝的区别

    首先深拷贝和浅拷贝都是对象的拷贝,都会生成一个看起来相同的对象,他们本质的区别是拷贝出来的对象的地址是否和原对象一样,也就是地址的复制还是值的复制的区别. 什么是可变对象,什么是不可变对象: 可变对象 ...

  7. python深拷贝和浅拷贝的使用场景_深拷贝、浅拷贝的理解与使用场景

    什么是深拷贝.浅拷贝? 通俗解释:深拷贝是内容拷贝,浅拷贝是地址拷贝 区别点: 深拷贝会创建一个新的内存空间,拷贝的值是一样的,但是内存地址不一样. 浅拷贝只是拷贝指向原来对象的地址,使原对象的引用计 ...

  8. python——深拷贝与浅拷贝的区别

    一.浅拷贝 原列表 data1=[8,24,[2,30,35]] 浅拷贝后的列表 data2=data1.copy()原列表的内存地址 print(id(data1)) 2726096606848 拷 ...

  9. 图解python_图解Python深拷贝和浅拷贝

    Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 对象赋值 直接看一段代码: will ...

  10. Python 深拷贝和浅拷贝

    Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 对象赋值 直接看一段代码: will= ...

最新文章

  1. 【 SIMULATION 】RMSE Comparison of Linear Approaches for TOA - Based Positioning
  2. golang signal 信号简介
  3. tomcat拒绝访问是为什么_Tomcat中的connectTimeout和慢攻击
  4. ASP.NET Core快速入门(第5章:认证与授权)--学习笔记
  5. Java核心类库篇1——简介
  6. 泰克示波器查眼图_泰克示波器自带上位机软件功能介绍,了解一下
  7. sequelize常见操作使用方法
  8. 牛客网matlab怎么输入数据,从牛客上找的面经
  9. 在MacOS和iOS系统中使用OpenCV
  10. 【操作系统/OS笔记05】非连续内存分配:分段、分页、页表
  11. Linux(CentOS7)下安装mysql
  12. 【面经】字节AI Lab-NLP算法热乎面经
  13. DDA算法--计算机图形学
  14. 数字图像处理(dip)
  15. Edge(chrome内核)浏览器Linux版本初体验
  16. Android USB通信开发总结和热敏打印机开发实例解析
  17. react ssr php,从零开始搭建React同构应用(三):配置SSR
  18. Word 分节符的删除(不改变文章格式)
  19. Windows Hello安装和体验
  20. python分割图片数字_python实现图片中文字分割效果

热门文章

  1. 微信支付的跨平台架构到底有多牛?
  2. ElasticSearch高级检索总结
  3. 结构型模式(4种)学习
  4. java 微信https 证书_Java中的微信支付(2):API V3 微信平台证书的获取与刷新
  5. nginx 部署vue 3
  6. 基于《代码本色》的processing学习与拓展
  7. 问题解决:Word页眉实现左右两端对齐
  8. 全国青少年软件编程等级考试标准(C语言一级)
  9. x-code的使用技巧心得
  10. 新概念英语一 : 语法整理 unit7 121-144