1. 浅拷贝
- 浅拷贝是对于一个对象的顶层拷贝
通俗的理解是:拷贝了引用,并没有拷贝内容
a=[11,22,33] print(id(a)) b=a#浅拷贝 print(id(b)) a.append(44) print(a) print(b) a={'name':'xiaowang'} print(id(a)) b=a print(id(b)) a['id']=100 print(a) print(b)
2. 深拷贝
- 深拷贝是对于一个对象所有层次的拷贝(递归)
import copy a=[11,22,33] print(id(a)) b=copy.deepcopy(a)#深拷贝 print(id(b))#b的id和a的id不一样 print(b) a.append(44) print(a) print(b)
3. 拷贝的其他方式
浅拷贝对不可变类型和可变类型的copy不同
import copy a = [11,22,33] b = copy.copy(a) print(id(a)) a.append(44) print(a) print(b) a = (11,22,33) b = copy.copy(a) print(id(a)) print(id(b))
分片表达式可以赋值一个序列 a = "abc" b = a[:] 字典的copy方法可以拷贝一个字典 d = dict(name="zhangsan", age=27) co = d.copy() 有些内置函数可以生成拷贝(list) a = list(range(10)) b = list(a) copy模块中的copy函数 import copy a = (1,2,3) b = copy.copy(a)