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()方法。这样,在改变新对象的时候,原对象才能不受影响,也就是保持原始数据不变