以下操作会会出现浅拷贝的情况

  • 使用切片[:]操作
  • 使用工厂函数(如list/dir/set)
  • 使用copy模块中的copy()函数

对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址)

import copy
class Copy_Test(object):def __init__(self,a):self.a = aa = Copy_Test('AAA')
c = a  #给这个对象再加上一个引用
print(id(a),id(c))  #内存地址一样
list1 = [1,2,3,4,5,6,7,8,9]
list2 = list1[:] #切片复制,2个地址
list2[2] = 8899
print(list1,list2)  #list2被改变 list无变化
print(id(list1),id(list2))#内存地址不一样
list3 = [1,2,3,4,5,6,[7,8,9]]
list4 = list3[:]
print(id(list3),id(list4))#内存地址不一样
list4[6][1] = 88
print(list3,list4)#因为有子列表  所以list4被改变,list3也会随之改变
list5 = [8,[9,8,9]]
list6 = copy.copy(list5)
list6[1][1] = 88
print(id(list5),id(list6))#内存地址不一样
print(list5,list6)#因为copy是浅拷贝  所以list6被改变,list5也会随之改变
list7 = [8,8,9,456,8,[8,946,8]]
list8 = copy.deepcopy(list7)
list8[-1][1] = 888
print(id(list7),id(list8))#内存地址不一样
print(list7,list8)#因为copy是深拷贝  所以list6被改变,list5也会随之改变

对于对象中的元素,深拷贝都会重新生成一份(有特殊情况,下面会说明),而不是简单对原始元素的内存地址的引用

对于非容器类型(如数字、字符串、和其他'原子'类型的对象)没有被拷贝一说

如果元祖变量只包含原子类型对象,则不能深拷贝,看下面的例子

转载于:https://www.cnblogs.com/arrow-kejin/p/8972047.html

python对象的深复制与浅复制相关推荐

  1. python列表浅复制_Python列表的深复制和浅复制示例详解

    一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码: l1 = [5, 4, 3, 2, 1] # 用 ...

  2. python list 深复制_Python列表的深复制和浅复制示例详解

    免费资源网,https://freexyz.cn/ 一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码 ...

  3. php对象当参数传递 php深复制和浅复制

    把对象当参数传递给方法,在方法里改过对象后,影响到外面的对象  因为对象是引用传递过去的 class Book {public $name;public function __construct($n ...

  4. C#中的深复制和浅复制(在C#中克隆对象)

    C#中的深复制和浅复制(在C#中克隆对象) 转载于:https://www.cnblogs.com/dalovess/p/7002947.html

  5. iOS 集合的深复制与浅复制

    2019独角兽企业重金招聘Python工程师标准>>> 概念 对象拷贝有两种方式:浅复制和深复制.顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针:深复制是直接拷贝整个对 ...

  6. C++学习基础七——深复制与浅复制

    C++学习基础七--深复制与浅复制 一.深复制与浅复制基本知识 深复制和浅复制,又称为深拷贝和浅拷贝. 深复制和浅复制的区别如下图1所示: 图1 图1表示的是,定义一个类CDemo,包含int a和c ...

  7. 深复制VS浅复制(MemberwiseClone方法介绍)

    MemberwiseClone方法,属于命名空间System,存在于程序集 mscorlib.dll中.返回值是System.Object.其含义是:创建一个当前object对象的浅表副本. MSDN ...

  8. Objective-C 深复制和浅复制与NSCopying协议

    1.简单复制只能实现浅拷贝:指针赋值,使两个指针指向相同的一块内存空间,操作不安全. 2. Foundation类已经遵守了<NSCopying>和 <NSMutableCopyin ...

  9. IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)

    1. copy.mutableCopy方法 copy方法返回对象的不可修改的副本 mutableCopy方法返回的对象可修改的副本 1).测试demo int main(int argc, char ...

  10. [C++]深复制与浅复制

    深复制与浅复制 C++中,默认的复制构造函数只能实现浅复制. 浅复制指的是在对象复制前,只对对象中的数据成员进行简单的复制 大多数情况下"浅复制"已经能很好的工作了,但是当类的数据 ...

最新文章

  1. 如何防止google colab 掉线
  2. 简单汇编----输入密码判断正否
  3. python答案公众号_大学慕课用Python玩转数据答案查题公众号
  4. 用Python轻松开发数据库取数下载工具
  5. 从一个Android码农视角回顾2018GDD大会
  6. dropbox mac_如何在Windows或Mac上启动时阻止Dropbox打开
  7. java oca_OCA第5部分中的Java难题
  8. python为什么装不了pip_python自带pip用不了怎么办
  9. Google | 创造Youtube单次上线最高收益!解决推荐中的信息茧房困境
  10. java图片的导出,并压缩
  11. android双联动列表,Android Fragment实现列表和内容联动
  12. jQuery 学习-样式篇(一):如何引用 jQuery
  13. 基于Protues的Arduino学习笔记01-Arduino UNO实验板设计
  14. matlab绘图和python绘图
  15. 椭球体上某区域面积的求算,及该区域兰伯特投影与墨卡托投影到二维平面后面积对比...
  16. cad字体安装_史上最全CAD字体库,3000+种字体!没有人能安装全!
  17. 【转载】UMTS和GSM的架构
  18. 最全的大数据学习资料整理
  19. android 3d动画绘制,Iyan 3d app
  20. win10计算机打开一直读进度条,win10开机读条后黑屏怎么办_win10开机读条之后黑屏修复方法-win7之家...

热门文章

  1. HazeOver For Mac(管理窗口工具)
  2. 易用性强的数据库管理工具DBeaverEE v22.0.1
  3. System Toolkit for Mac(Mac系统维护工具)
  4. Infor 成功举办 Infor Next China
  5. 全局替换字体,开源库更方便!!! 1
  6. java语言的演化——读JavaOne ppt笔记
  7. 点击按钮对两个div的隐藏与显示进行切换
  8. 获取本机IP可区分系统可区分虚拟机和本机java程序跨平台
  9. JS写的简单的图片播放器
  10. Spark中sortByKey和sortBy对(key,value)数据分别 根据key和value排序