本文共 801 字,大约阅读时间需要 2 分钟。
python 深浅拷贝不之前一直不太理解,只是概念性的理解像 1,2 所说,敲完下面代码希望你可以理解。
1、copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | >>> import copy >>> l1 = [ 1 , 3 , 5 ,[ 'a' , 'b' , 'c' ]] >>> a = l1 >>> b = copy.copy(a) # 浅拷贝 >>> c = copy.deepcopy(a) # 深拷贝 >>> l1.append( 7 ) >>> l1[ 3 ].append( 'd' ) >>> print 'l1=' ,l1 l1 = [ 1 , 3 , 5 , [ 'a' , 'b' , 'c' , 'd' ], 7 ] >>> print 'a=' ,a a = [ 1 , 3 , 5 , [ 'a' , 'b' , 'c' , 'd' ], 7 ] >>> print 'b=' ,b b = [ 1 , 3 , 5 , [ 'a' , 'b' , 'c' , 'd' ]] >>> print 'c=' ,c c = [ 1 , 3 , 5 , [ 'a' , 'b' , 'c' ]] # 深拷贝数据没有变化 |
备注:深浅拷贝的区别在于嵌套部分,浅拷贝和被拷贝对象的嵌套部分的元素是同一个,
一个改变其他的也会改变,列入上文实例 l1 = [1,3,5,['a','b','c']] ,嵌套部分是 ['a','b','c'], 这里的数据发生变化,浅拷贝也会发生变化。
本文转自 水滴石川1 51CTO博客,原文链接:http://blog.51cto.com/sdsca/1983766,如需转载请自行联系原作者