码迷,mamicode.com
首页 > 其他好文 > 详细

=、浅拷贝、深拷贝小结

时间:2017-11-05 23:39:32      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:pop   bsp   class   操作   可变   创建   port   类型   不同   

>>> 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]}



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

>>> 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]}

 

=、浅拷贝、深拷贝小结

标签:pop   bsp   class   操作   可变   创建   port   类型   不同   

原文地址:http://www.cnblogs.com/maxiaohei/p/7789058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!