1.赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。

In [168]: a
Out[168]: [1, 2, 3] In [169]: b=a In [170]: a.append(4) In [171]: a
Out[171]: [1, 2, 3, 4] In [172]: b
Out[172]: [1, 2, 3, 4]

2.浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(copy模块的copy()函数)

In [187]: import copy#copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

In [188]: a=[1,2,3,4,['a','b']]

In [189]: c=copy.copy(a)

In [190]: a.append(5)

In [191]: a
Out[191]: [1, 2, 3, 4, ['a', 'b'], 5] In [192]: c
Out[192]: [1, 2, 3, 4, ['a', 'b']] In [193]: a[4].append('c') In [194]: a
Out[194]: [1, 2, 3, 4, ['a', 'b', 'c'], 5] In [195]: c
Out[195]: [1, 2, 3, 4, ['a', 'b', 'c']]

3.深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变)(copy模块的deep.deepcopy()函数)

In [196]: import copy

In [197]: a=[1,2,3,4,['a','b']]

In [198]: c=copy.deepcopy(a)

In [199]: a.append(5)

In [200]: a
Out[200]: [1, 2, 3, 4, ['a', 'b'], 5] In [201]: c
Out[201]: [1, 2, 3, 4, ['a', 'b']] In [202]: a[4].append('c') In [203]: a
Out[203]: [1, 2, 3, 4, ['a', 'b', 'c'], 5] In [204]: c
Out[204]: [1, 2, 3, 4, ['a', 'b']]

综上所述,浅copy和深copy:

  copy浅拷贝(copy.copy()),没有拷贝子对象,所以原始数据改变,子对象会改变

       深copy的相同在于(copy.deepcopy()),包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

       它们的相同之处是,父对象都没有改变!

最新文章

  1. java.lang.Class.isAssignableFrom()用法解析
  2. Spring 01基础
  3. 【bzoj1023】仙人掌图
  4. 一行代码设置TLabel.Caption的前世今生
  5. Qt之QNetworkInterface
  6. Balloon Comes!
  7. LINQ里的Distinct()
  8. 将json格式日期(毫秒数)转成日常日期格式和日常格式时间对比
  9. Delphi中TFlowPanel实现滚动条效果
  10. CSS3 transform制作的漂亮的滚动式导航
  11. Unity3D开发必备神器(Visual Studio Tools for Unity)
  12. SDN理解:云数据中心底层网络架构
  13. phpcms推荐位数据库字段详解
  14. 编码中的setCharacterEncoding 理解<转自-fancychendong>
  15. javascript 正则表达式学习教程
  16. Word巧用大纲视图 快速重排版面
  17. 架构之ELK日志分析系统
  18. Springboot中如何在Utils类中使用@Autowired注入bean
  19. 深入剖析GPU Early Z优化
  20. Spring Boot自动配置原理、实战

热门文章

  1. memset memcmp memcpy memmove 自己实现
  2. Linux学习历程——Centos 7 man命令
  3. GitHub-分支管理01
  4. VMware安装系统时"无法创建新虚拟机: 不具备执行此操作的权限"的解决方案
  5. Insert Into 语句的语法错误
  6. pip freeze 打包依赖库及setup.py
  7. 生成对抗网络(GAN)
  8. centos7 开机启动服务链接说明
  9. 在JS中调用CS里的方法(PageMethods)
  10. 上下文管理协议with open as