python中的复制
python中的拷贝
浅拷贝: 对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝。
深拷贝: 对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。
在python中有三种复制方式:
- 直接赋值:
b = a
, 这种方式实质上为引用,即内存上b和a表示同一块内存的内容。 - 浅拷贝:
b = copy.copy(a)
或b = a.copy()
, 将父对象a拷贝到b,但是父对象内部的子对象拷贝的是引用。 - 深拷贝:
b = copy.deepcopy(a)
,将父对象a和a内部的子对象都拷贝到b中,a和b在内存上相互独立。
在菜鸟教程中给了关于上面三种很形象的图示:
import copy
a = [1,2,3,['a','b']]
b = a #引用
c = copy.copy(a) #浅拷贝,将a子对象['a','b']的引用传递给c,此时a[3]和c[3]的地址不同,但是它们指向了同一块内存的内容。
d = copy.deepcopy(a) #深拷贝
a.append(5)
print(" a:",a,