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