首页 > 编程语言 > 详细

完全理解python深拷贝和浅拷贝

时间:2014-07-29 22:13:02      阅读:674      评论:0      收藏:0      [点我收藏+]

   import copy
bubuko.com,布布扣
= [1234, [ab]]  #原始对象
bubuko.com,布布扣

bubuko.com,布布扣
= a  #赋值,传对象的引用
bubuko.com,布布扣
= copy.copy(a)  #对象拷贝,浅拷贝
bubuko.com,布布扣
= copy.deepcopy(a)  #对象拷贝,深拷贝
bubuko.com,布布扣

bubuko.com,布布扣a.append(
5)  #修改对象a
bubuko.com,布布扣
a[4].append(c)  #修改对象a中的[‘a‘, ‘b‘]数组对象
bubuko.com,布布扣

bubuko.com,布布扣
print a = , a
bubuko.com,布布扣
print b = , b
bubuko.com,布布扣
print c = , c
bubuko.com,布布扣
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‘]]

再来了解一下怎么copy的。

   import copy
bubuko.com,布布扣
= [1234, [ab]]  #原始对象
bubuko.com,布布扣

bubuko.com,布布扣
= a  #赋值,传对象的引用
bubuko.com,布布扣
= copy.copy(a)  #对象拷贝,浅拷贝
bubuko.com,布布扣
= copy.deepcopy(a)  #对象拷贝,深拷贝

   print id(a[0]),id(a[1]),id(a[2]),id(a[3]),id(a[4]),id(a[4][0]),id(a[4][1])
   print id(c[0]),id(c[1]),id(c[2]),id(c[3]),id(c[4]),id(a[4][0]),id(a[4][1])
   print id(d[0]),id(d[1]),id(d[2]),id(d[3]),id(d[4]),id(a[4][0]),id(a[4][1])

   a.append(5)  #修改对象a
bubuko.com,布布扣
a[4].append(c)  #修改对象a中的[‘a‘, ‘b‘]数组对象

   print id(a[0]),id(a[1]),id(a[2]),id(a[3]),id(a[4]),id(a[4][0]),id(a[4][1])
   print id(c[0]),id(c[1]),id(c[2]),id(c[3]),id(c[4]),id(a[4][0]),id(a[4][1])
   print id(d[0]),id(d[1]),id(d[2]),id(d[3]),id(d[4]),id(a[4][0]),id(a[4][1])

输出结果:

32303840 32303828 32303816 32303804 40936712 31936000 31936024
32303840 32303828 32303816 32303804 40936712 31936000 31936024
32303840 32303828 32303816 32303804 41296480 31936000 31936024
32303840 32303828 32303816 32303804 40936712 31936000 31936024
32303840 32303828 32303816 32303804 40936712 31936000 31936024
32303840 32303828 32303816 32303804 41296480 31936000 31936024

可以明显的看到,浅拷贝只是拷贝父对象的所有内容,而深拷贝则对子对象新建一个对象,再拷贝内容,所以,当子对象发生改变时,浅拷贝会发生改变,而深拷贝不会发生改变。




完全理解python深拷贝和浅拷贝,布布扣,bubuko.com

完全理解python深拷贝和浅拷贝

原文:http://my.oschina.net/u/1259000/blog/295973

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