前言
上一篇文章 python学习——【第十一弹】中我们了解了 python中的浅拷贝,这篇文章接着学习python中的深拷贝。
简单回顾
我们知道在python中的拷贝一般都是浅拷贝;浅拷贝只拷贝对象的主层元素,深层元素不进行拷贝。
而python中的深拷贝(deepcopy) 不仅会拷贝对象的主层元素,深层元素也会拷贝。
举例
我们同样先举列表进行深拷贝的例子,注意在进行深拷贝时我们需要先引入一个 copy 模板块:
由于列表是可变序列,因此我们无法从id地址上看出内存地址的关系图;但是我们可以通过改变拷贝后得到的对象d的值来查看内存的变化情况:
通过运行结果我们可以看出:无论是改变d的浅层元素还是深层元素,原对象a的id地址都不会发生改变,这就说明,深拷贝deepcopy 会将对象的深层对象和表层对象都拷贝,形成一个新的对象。
因此它的内存图是这样的:
类的深拷贝
同样的,我们画出相应的内存图:
每篇一语
凡事预则立,不预则废!
如有不足,感谢指正!