深拷贝和浅拷贝
python之深拷贝和浅拷贝
1.变量名赋值的过程是一个 “指向” 过程
2. 先 import copy
,通过 a = copy.copy(b)
方法拷贝,就是浅拷贝
3.通过 a = copy.deepcopy(b)
方法拷贝,就是深拷贝
4. 切片操作、字典自带的copy()
方法和函数实参传给形参的过程,都是浅拷贝
那么,什么是深拷贝,什么是浅拷贝呢?
深拷贝:递归拷贝所有引用指向的数据和数据里面的引用指向的数据,该方法在拷贝时,如果拷贝的内容只有不可变数据,那就和赋值效果一样,但是如果包含有可变数据类型时,就会递归拷贝所有引用指向的数据和数据里面的引用指向的数据
浅拷贝:只拷贝引用指向的数据,但是不再拷贝数据里面的引用指向的数据,该方法在拷贝不可变数据类型【最外层】时都是只拷贝引用指向的数据,但是不再拷贝数据里面的引用指向的数据,和赋值效果一样, 切片、字典自带的copy()
方法和函数实参传递到形参的过程 都是浅拷贝
代码:
1 | import copy |
运行结果:
1 | [[1, 2, 3], [3, 4]] # aa的值也改变了 |
Original author: John Doe & wooyee.Landucheg
Original link: http://yoursite.com/2019/09/04/深拷贝和浅拷贝/
Copyright Notice: Please indicate the source of the reprint (must retain the author's signature and link)