任何变成语言中,其实都有浅拷贝和深拷贝的概念,Python 中也不例外。
浅拷贝
浅拷贝是对于一个对象的顶层拷贝。通俗的理解是:拷贝了引用,并没有拷贝内容。
1 | 1,2,3] a = [ |
深拷贝 - copy.deepcopy()
深拷贝是对于一个对象所有层次的拷贝(递归)
1 | # 需要引入 copy 模块 |
- copy.deepcopy 会递归拷贝
1 | 1,2] a = [ |
- copy.copy 不会递归拷贝
1 | e = copy.copy(c) |
拷贝的其他方式
浅拷贝对不可变类型和可变类型的 copy 不同
- 字典的 copy 方法可以拷贝一个字典
拷贝方式类似于 copy.copy(),即不是递归拷贝。
1 | 1,2] l = [ |
- 有些内置函数可以生成拷贝(list)
1 | 5)) a = list(range( |
- 拷贝不可变类型数据
使用 copy.copy() 时,它会根据拷贝对象是否是可变类型,做不同的处理。
比如处理元组时:
1 | 1,2,3) a = ( |