浅拷贝与深拷贝-不止于python
在python中复制一个对象或者容器分为三种:
下面的父对象和子对象个人理解
1 | a = [1,2,3,4,[11,22,33]] |
**1.直接赋值:**其实就是对象的引用(别名)。
**b = a:**赋值引用,a 和 b 都指向同一个对象。

2.**浅拷贝(copy):**拷贝父对象,不会拷贝对象的内部的子对象。
b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)

3.深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象
也就是将原数据完全的复制和新建了一份,不管原数据的如何改变,这份数据也不会改变
b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

是否为同一对象验证
1 | import copy |
结果为:
1 | a的id为91184712 |
实例:
1 | import copy |
结果为:
1 | ('a = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5]) |
参考:
http://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html
作者:
胖胖不胖
版权声明:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 不止于python
感谢您的支持,我会继续努力!
微信支付
支付宝