Python浅拷贝\深拷贝

import copy
person=['hehe',['save',1000]]
p1=person[:]
p2=person[:]
p1[0]='aaa'
p2[1][1]=5111

print(p1)
print(p2)

结果是

['aaa', ['save', 5111]]
['hehe', ['save', 5111]]
import copy
person=['hehe',['save',1000]]
p1=person[:]
p2=copy.copy(person)
p1[0]='aaa'
p2[1][1]=5111



print(p1)
print(p2)

结果还是

['aaa', ['save', 5111]]
['hehe', ['save', 5111]]

利用切片操作和工厂方法list方法和copy.copy方法拷贝就叫浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。
浅拷贝拷贝了引用,p1[0]改变,改变了引用

import copy
person=['hehe',['save',1000]]
p1=person[:]
p2=copy.deepcopy(person)
p1[0]='aaa'
p2[1][1]=5111



print(p1)
print(p2)

结果是

['lx', ['save', 1000]]
['musk', ['save', 5111]]

利用copy中的deepcopy方法进行拷贝就叫做深拷贝,外围和内部元素都进行了拷贝对象本身,而不是引用。
但是对于数字,字符串和其他原子类型对象等,没有被拷贝的说法,即便是用深拷贝,查看id的话也是一样的,如果对其重新赋值,也只是新创建一个对象,替换掉旧的而已。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容