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

深拷贝、浅拷贝

时间:2015-07-17 14:12:39      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:python   操作   拷贝   编程   

(内容大多来自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)

可以自行测试

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

深拷贝、浅拷贝

标签:python   操作   拷贝   编程   

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

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