码迷,mamicode.com
首页 > 编程语言 > 详细

python中浅拷贝和深度拷贝的区别

时间:2019-01-06 16:34:26      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:区别   深度拷贝   imp   很多   ima   面试题   .com   统一   app   

在很多面试题中都会问到浅拷贝跟深度拷贝的区别,前几天一个朋友也问到了我浅拷贝跟深度拷贝到底有什么区别,这里就简单举栗子讲一下两者的区别。

浅拷贝(copy()):拷贝父对象,不会拷贝对象的内部的子对象

深拷贝( copy.deepcopy()):完全拷贝父对象跟子对象

import copy

l = [1, 2, [a, b]]
s_copy = l.copy()  # 浅拷贝
d_copy = copy.deepcopy(l)  # 深拷贝
l.append(3)
l[2].append(c)

print(l)  # [1, 2, [‘a‘, ‘b‘, ‘c‘], 3]
print(s_copy)  # [1, 2, [‘a‘, ‘b‘, ‘c‘]]
print(d_copy)  # [1, 2, [‘a‘, ‘b‘]]

通过上面的输出结果可以很好的看到,深拷贝是直接复制了所有的父对象跟子对象,原来的不管怎么变都跟他没关系,浅拷贝只是复制了当前的父对象,如果子对象发生变化,浅拷贝也是会跟着改变的。

深入解析:

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

技术分享图片

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

技术分享图片

 

python中浅拷贝和深度拷贝的区别

标签:区别   深度拷贝   imp   很多   ima   面试题   .com   统一   app   

原文地址:https://www.cnblogs.com/zzqit/p/10229059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!