1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象一个很好的例子:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->import copya = [1, 2, 3, 4, ['a', 'b']] #原始对象
b = a #赋值,传对象的引用
c = copy.copy(a) #对象拷贝,浅拷贝
d = copy.deepcopy(a) #对象拷贝,深拷贝
a.append(5) #修改对象
aa[4].append('c') #修改对象a中的['a', 'b']数组对象
print 'a = ', aprint 'b = ', bprint 'c = ', cprint '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']]
高手说看看这个
importcopyclassObj(object):def __init__(self,num):
self.num=numdef __str__(self):returnstr(self.num)__repr__=__str__
deftest(fun):
a=[ Obj(10),Obj(11) ]
b=fun(a)print 'a=%s,b=%s'%(a,b)
a.reverse()
a[0].num=100
print 'a=%s,b=%s'%(a,b)print '='test(lambda_:_)print 'copy.copy'test(copy.copy)print 'copy.deepcopy'test(copy.deepcopy)