深浅拷贝详解
引用:两个变量指向同一引用 eg:a =[1,2,3] b= a id(a)==id(b)
拷贝:是重新拷贝一份引用 内存地址不同
浅拷贝:copy.copy
对于一个对象的顶层拷贝
深拷贝:copy.deepcopy
对于一个对象所有层次的拷贝(递归)
两个变量 a=b 指向不同的内存地址
eg: a = [1,2,3,4] c = copy.deepcopy(a) ---> id(a) !=id(c)
注: copy.deepcopy-->一直深入到底
a = [11,22,33] b = [44,55,66] c=[a,b]
e = copy.deepcopy(c) e中的e[0]和e[1]的地址也是重新拷贝的
copy.copy --->只深度一层
a = [11,22,33] b = [44,55,66] c=[a,b]
e = copy.copy(c) e中的e[0]和e[1]的地址却还是和a,b是一样
当copy.copy(不可变类型时) ===>相当于浅拷贝
a = [11,22,33] b = [44,55,66] c=(a,b)
e = copy.copy(c) e的指向就是c的内存地址 e中的e[0]和e[1]的地址 和a,b是一样
元组不一样 元组不可变 所以特殊 引用 和 拷贝 都是指向同一内存地址