=、浅拷贝、深拷贝小结

>>> import copy
// =  指向同一个内存空间,操作的是同一个对象

>>> t1 = {'a':1, 'b':2}

>>> t2 = t1

>>> id(t1)

42559696

>>> id(t2)

42559696


浅拷贝是对于一个对象的顶层拷贝

通俗的理解是:拷贝了引用,并没有拷贝内容

>>> t1 = {'a':1, 'b':2}

>>> t2 = copy.copy(t1)

>>> t2

{'a': 1, 'b': 2}

>>> t1

{'a': 1, 'b': 2}

>>> t2.pop('b')

2

>>> t2

{'a': 1}

>>> t1

{'a': 1, 'b': 2}

// 但是子元素为可变类型时,它是引用类似于在子元素上使用 ‘’=‘’

>>> t1 = {'a':1, 'b':2, 'c':[1,2,3]}

>>> t2 = copy.copy(t1)

>>> t2['c'][0] = 4

>>> t2

{'a': 1, 'b': 2, 'c': [4, 2, 3]}

>>> t1

{'a': 1, 'b': 2, 'c': [4, 2, 3]}



// 深拷贝:递归的拷贝所有元素,即使子元素使用的是可变类型,深拷贝的结果是完全不相干

深拷贝 copy.deepcopy  深拷贝是对于一个对象所有层次的拷贝(递归)

>>> t1 = {'a':1, 'b':2, 'c':[1,2,3]}

>>> t2 = copy.deepcopy(t1)

>>> t2['c'][0] = 4

>>> t2

{'a': 1, 'b': 2, 'c': [4, 2, 3]}

>>> t1

{'a': 1, 'b': 2, 'c': [1 2, 3]}

 

posted @ 2017-11-05 22:07  mlj0503  阅读(236)  评论(0编辑  收藏  举报