首页 > 其他 > 详细

深浅拷贝

时间:2021-06-13 19:14:58      阅读:21      评论:0      收藏:0      [点我收藏+]
定义 直接赋值:就是对象的引用(别名) 浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象 深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝父对象及其子对象 解释b
 

定义

  • 直接赋值:就是对象的引用(别名)
  • 浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象
  • 深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝父对象及其子对象

解释

b = a: 赋值引用,a和b都指向同一个对象

技术分享图片技术分享图片

b = a.copy(): 浅拷贝,a和b都是一个独立的对象,但它们的子对象是指向统一对象(是引用)

技术分享图片技术分享图片

b = copy.deepcopy(a): 深拷贝,a和b完全拷贝了父对象及其子对象,两者是完全独立的

技术分享图片技术分享图片

示例

以下是直接赋值、浅拷贝和深拷贝之对比

import copy
 
a = [1, 2, 3, 4, [‘a‘, ‘b‘]]  #原始对象
 
b = a        #直接赋值,原始对象的引用
c = copy.copy(a)     #浅拷贝
d = copy.deepcopy(a)    #深拷贝
 
a.append(5)      #修改对象a
a[4].append(‘c‘)     #修改对象a中的[‘a‘, ‘b‘]列表对象
 
print( ‘a = ‘, a )
print( ‘b = ‘, b )
print( ‘c = ‘, c )
print( ‘d = ‘, d )

以上实例执行输出结果为:

a = [1, 2, 3, 4, [‘a‘, ‘b‘, ‘c‘], 5]
b = [1, 2, 3, 4, [‘a‘, ‘b‘, ‘c‘], 5]
c = [1, 2, 3, 4, [‘a‘, ‘b‘, ‘c‘]]
d = [1, 2, 3, 4, [‘a‘, ‘b‘]]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

深浅拷贝

原文:https://www.cnblogs.com/jeavy/p/14880355.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!