python 的深拷贝与浅拷贝

时间:2021-12-09 03:12:04

一句话总结,浅拷贝只拷贝父对象,不拷贝子对像。

注意:浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。下面通过代码来演示

import copy
a=[[1,2],[3,4]]
b=copy.copy(a)
c=copy.deepcopy(a)

现在a b c都是等于[[1,2],[3,4]]

现在我们来改变a的父对象

a.append(5)

现在再来打印a b c的值,变成了

python 的深拷贝与浅拷贝

这是因为深拷贝与浅拷贝都会拷贝父对象,对于父对象来说,他们都是独立的,所以值不会变。

现在我们来改变a的子对象

 a[0][0]=0

现在来打印a b c的值

python 的深拷贝与浅拷贝

浅拷贝只拷贝父对象,所以a的子对象改变时,浅拷贝的b的子对象也跟着变了,而深拷贝的c的子对象是独立的,所以没有变