首页 > 其他 > 详细

深拷贝、浅拷贝

时间:2015-07-17 14:09:59      阅读:183      评论:0      收藏:0      [点我收藏+]

(内容大多来自python核心编程)
创建一个python对象然后把它赋给另一个变量时,python仅仅是拷贝了这个对象的引用。
序列类型(字符串、列表和元组)的默认拷贝类型是浅拷贝,具体的施行方式有三种:
1、完全切片操作[:];2、利用 工厂函数,比如list(),dict()3、使用copy模块的copy函数

person=[‘name‘,[‘savings‘,100.00]]
hubby=person[:] #slice copy
wifey=list(persion) #fac func copy
hubby[0] = ‘joe‘
wifey[0] = ‘jane‘
bubby,wifey
([‘joe‘, [‘saving‘, 100.0]], [‘jane‘, [‘saving‘, 100.0]])
hubby[1][1] = 50.00 
bubby,wifey
([‘joe‘, [‘saving‘, 50.0]], [‘jane‘, [‘saving‘, 50.0]])

在这里由于字符串是不可变类型,而列表是可变类型,因此在执行浅拷贝时,字符串被显式拷贝并创建了一个字符串对象,而列表则由于是同一个对象的引用,因此修改bubby会引起wifey对象的改变。
深拷贝:可以使用copy.deepcopy()函数

import copy
wifey = copy.deepcopy(person)

可以自行测试

版权声明:本文为博主原创文章,未经博主允许不得转载。

深拷贝、浅拷贝

原文:http://blog.csdn.net/u010640235/article/details/46925311

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!