python浅拷贝与深拷贝
运行结果
既然是浅拷贝,应该键a的值都为7才对,后经过查阅资料得知,如果对象本身是不可变的,那么浅拷贝时也会产生两个值
浅拷贝是指拷贝的只是原对象元素的引用,换句话说,浅拷贝产生的对象本身是新的,但是它的内容不是新的,只是对原对象的一个引用。
深拷贝是复制一个内容而不是简单的复制引用而已
换句话说:有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存
也就是说,在浅拷贝情况下,不同引用指向的是同一块内存,改其中一个引用,那么其他引用也会跟着改变
举个例子:
myDict={'a':2,3:['x','y'],'joe':'smith'}
newDict=myDict.copy()
newDict['a']=7
newDict[3][0]='z'
print myDict
print newDict
运行结果
{'a': 2, 3: ['z', 'y'], 'joe': 'smith'}
{'a': 7, 3: ['z', 'y'], 'joe': 'smith'}
既然是浅拷贝,应该键a的值都为7才对,后经过查阅资料得知,如果对象本身是不可变的,那么浅拷贝时也会产生两个值
可变类型: 列表,字典
不可变类型:数字,字符串,元组