python深拷贝和浅拷贝的区别

2024-12-03 17:08:29
推荐回答(2个)
回答1:

深度拷贝,就是把拷贝对象里所有的东西全部另存一份到新的内存空间,拷贝完后,两者毫无联系,从此是路人。跟我们的常识理解是一回事。
浅拷贝,就是把拷贝对象的地址给了需要拷贝的对象,看上去两个是不同的对象,其实本质都是一回事,也有另外一种浅拷贝,看上去,确实复制了一份新的,但这个新的对象,是个可变对象,它指向的对象内容,仍然没有复制过来,仍然指向了同一个东西。

回答2:

1.copy.copy浅拷贝只拷贝父对象,不会拷贝对象的内部的子对象。2.copy.deepcopy深拷贝拷贝对象及其子对象一个很好的例子:importcopya=[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']]