深度解析Python的赋值、浅拷贝、深拷贝

143 阅读1分钟

简述

 直接赋值: 其实就是对象的引用(别名)。
 浅拷贝(copy): 拷贝父对象,不会拷贝对象内部的子对象。
 深拷贝(deepcopy):copy模块的deepcopy函数,copy.deepcopy(),完全拷贝了父对象及其子对象。
 拷贝:就是把原数据复制一份,在复制的数据上随意改动不会影响到其原数据。也就是这里讲的深拷贝。
    

1/直接赋值

image.png

2/浅拷贝

import copy
e = c.copy()
   
   

3/深拷贝

image.png

4/三者对比

 <1> d = c 赋值引用,c 和 d 都指向同一个对象
 <2> e = c.copy() 浅拷贝,c  和 e 是一个 独立的对象,但他们的 子对象还是指向统一对象即引用。
 <3> f = copy.deepcopy(c) 深度拷贝,c  和  f  完全拷贝了父对象及其子对象,两者是完全独立的。