python中标识一个对象唯一身份的是:对象的id(内存地址),对象类型,对象值。

deepcopy是真正意义上的复制,深拷贝,被复制对象完全复制一遍作为独立的新个体,新开辟一块空间。

浅拷贝,不会产生独立对象,等于赋值,只是对原有数据块打上新标签,其中一个标签改变,数据块就会变化。浅拷贝等于赋值,也可以通过copy实现,copy仅拷贝对象本身,浅拷贝不会对其中的子对象进行拷贝,如果对子对象进行修改,拷贝结果也会随着修改。

  • 复制的对象中无复杂子对象,即列表中不嵌套列表,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。
  • 复制的对象中有复杂子对象 (例如列表中的一个子元素是一个列表)如果改变复杂子对象的值(列表中的值)会影响浅复制的值。
import copy
a = [1,2,3,[4,5],1]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)a.append(9)
a[3].append(6)print(a)  #[1, 2, 3, [4, 5, 6], 1, 9]
print(b)    #[1, 2, 3, [4, 5, 6], 1, 9]
print(c)    #[1, 2, 3, [4, 5, 6], 1]
print(d)    #[1, 2, 3, [4, 5], 1]print(id(a))   #4594148288
print(id(b))    #4594148288
print(id(c))    #4594455328
print(id(d))    #4592688496x = 'Hello World'
y = x
z = copy.copy(x)
w = copy.deepcopy(x)
print(id(x)) #4617118576
print(id(y)) #4617118576
print(id(z)) #4617118576
print(id(w)) #4617118576# 对于不可变类型(元组、数值,字符串等)为浅拷贝,对象的id值与浅复制原来的值相同
# 对于可变类型(列表、字典等)为深拷贝,

python中copy和deepcopy详解相关推荐

  1. 2020-09-18 python中copy()和deepcopy()详解

    首先直接上结论: -–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变原有被复制对象不会对已经复制出来的新对象产生影响. -–而浅复制并不会产生一个独立的对 ...

  2. python中copy()和deepcopy()详解

    参考文章 http://iaman.actor/blog/2016/04/17/copy-in-python **首先直接上结论: -–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独 ...

  3. python中deepcopy函数_python中copy()和deepcopy()详解

    **首先直接上结论: -–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变原有被复制对象不会对已经复制出来的新对象产生影响. -–而浅复制并不会产生一个独立 ...

  4. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

  5. python中 xlrd/xlwt模块详解

    python中 xlrd/xlwt模块详解 1.什么是xlrd模块 python操作excel主要用到xlrd和xlwt两个库,即xlrd是读excel,xlwt是写excel库 一.安装xlrd模块 ...

  6. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  7. python中的super用法详解_Python中super函数用法实例分析

    本文实例讲述了python中super函数用法.分享给大家供大家参考,具体如下: 这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简 ...

  8. python classmethod_对Python中的@classmethod用法详解

    在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法. 总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的. 不过还是好奇去查了一下. 大致可以 ...

  9. python中copy和deepcopy详细区别

    python中copy和deepcopy 在 python 中,标识一个对象唯一身份的是:对象的id(内存地址),对象类型,对象值. deepcopy是真正意义上的复制,深拷贝,被复制对象完全复制一遍 ...

最新文章

  1. SSM整合及CRUD实现
  2. 阿里 RocketMQ 如何让双十一峰值之下 0 故障?
  3. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
  4. kafka自动提交offset失败:Auto offset commit failed
  5. installshield安装文件的制作小技巧--附加数据库
  6. 一觉醒来,没有购房资格了!
  7. 08Mysql与python交互
  8. 华为P50渲染图再曝光:居中打孔直屏+徕卡四摄
  9. java中整形_java中怎样实现60多位整形数字的运算
  10. 从没有C到ANSI C的认识
  11. 【C语言】10-字符和字符串常用处理函数
  12. VS2008快捷键总结
  13. KITTI数据集解析和可视化
  14. pygame详细安装教程
  15. Mac好用的RSS阅读器Reeder使用方法
  16. 简单的 js 日历控件
  17. 业务复习-微信登录/第三方登录实现
  18. 蔚来智驾功能大更新:与其叫NOP+,不如叫NAD-
  19. 计算机网络---数据链路层PPP协议
  20. centos 安装安全狗

热门文章

  1. 【转】发邮件的礼仪汇总---让优秀成为习惯
  2. 谷歌浏览器打开普通用户_Win7谷歌浏览器怎么设置多用户登录?-Win7谷歌浏览器设置多用户登录的方法 - 河东软件园...
  3. Android R setenforce 实现
  4. XCode 真机调试
  5. iphone 键盘兼容_如何在iPhone上使用单手键盘
  6. 普通护照出国免签及落地签国家和地区
  7. 华为hcia网络课程
  8. “今日头条杯”首届湖北省大学程序设计竞赛 D. Who killed Cock Robin(选择联通子图的方案数,树形dp)
  9. php中的shell_exec函数,exec与shell_exec函数在PHP中的区别是什么
  10. 西藏自治区那曲地区谷歌高清卫星地图下载