python 字典中的copy函数的浅拷贝问题

来源:互联网 发布:淘宝怎么打开我的店铺 编辑:程序博客网 时间:2024/04/30 07:40
python浅拷贝与深拷贝

浅拷贝是指拷贝的只是原对象元素的引用,换句话说,浅拷贝产生的对象本身是新的,但是它的内容不是新的,只是对原对象的一个引用。

深拷贝是复制一个内容而不是简单的复制引用而已

换句话说:有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存
也就是说,在浅拷贝情况下,不同引用指向的是同一块内存,改其中一个引用,那么其他引用也会跟着改变

举个例子:

myDict={'a':2,3:['x','y'],'joe':'smith'}newDict=myDict.copy()newDict['a']=7newDict[3][0]='z'print myDictprint newDict

运行结果

{'a': 2, 3: ['z', 'y'], 'joe': 'smith'}{'a': 7, 3: ['z', 'y'], 'joe': 'smith'}

既然是浅拷贝,应该键a的值都为7才对,后经过查阅资料得知,如果对象本身是不可变的,那么浅拷贝时也会产生两个值

可变类型: 列表,字典
不可变类型:数字,字符串,元组

原创粉丝点击