python 深浅copy

例子:

# coding=utf-8
import copy
a=[1,2,3,4,['aa','bn']]

b=a
c=copy.copy(a)
d=copy.deepcopy(a)

a.append(500)
a[4].append(800)
a.insert(2,600)

print 'a:',a
print 'b b=a:',b
print 'c copy copy:',c
print 'd deep copy:',d

结果如下:


(1)直接赋值:传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变

(2)copy浅拷贝:没有拷贝子对象(只拷贝父对象),所以原始数据改变,子对象不会改变

(3)deepcopy深拷贝:包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

如果要完全得到一个新的一模一样的对象,要用copy.deepcopy()方法。这样,在改变新对象的时候,原对象才能不受影响,也就是保持原始数据不变

 
posted @ 2018-12-01 10:57  向着太阳出发  阅读(155)  评论(0编辑  收藏  举报