python:copy()和deepcopy()区别

版权声明:作者:Rookiekk 联系邮箱:[email protected] 欢迎转载或分享,但请务必声明文章出处。 https://blog.csdn.net/qq_18888869/article/details/87967344

1.对象的赋值 

都是进行对象引用(内存地址)传递,即‘’ b is a‘’ ,a 变 b 也变

2.copy.copy(x):浅拷贝

会创建一个新的对象,即 “b is not a” ,但是,对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址),也就是说”b[i] is a[i]”

当我们使用下面的操作的时候,会产生浅拷贝的效果:

  • 使用切片[:]操作
  • 使用工厂函数(如list/dir/set)
  • 使用copy模块中的copy()函数

3.copy.deepcopy(x[, memo]):深拷贝

会创建一个新的对象,即”b is not a” ,并且 对于对象中的元素,深拷贝都会重新生成一份(有特殊情况,下面会说明),而不是简单的使用原始元素的引用(内存地址)

拷贝的特殊情况

其实,对于拷贝有一些特殊情况:

  • 对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有拷贝这一说
  • 如果元祖变量只包含原子类型对象,则不能深拷贝

猜你喜欢

转载自blog.csdn.net/qq_18888869/article/details/87967344