python 的深拷贝与浅拷贝

Posted 蜗牛到牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 的深拷贝与浅拷贝相关的知识,希望对你有一定的参考价值。

一句话总结,浅拷贝只拷贝父对象,不拷贝子对像。

注意:浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。下面通过代码来演示

import copy
a=[[1,2],[3,4]]
b=copy.copy(a)
c=copy.deepcopy(a)

现在a b c都是等于[[1,2],[3,4]]

现在我们来改变a的父对象

a.append(5)

现在再来打印a b c的值,变成了

这是因为深拷贝与浅拷贝都会拷贝父对象,对于父对象来说,他们都是独立的,所以值不会变。

现在我们来改变a的子对象

 a[0][0]=0

现在来打印a b c的值

浅拷贝只拷贝父对象,所以a的子对象改变时,浅拷贝的b的子对象也跟着变了,而深拷贝的c的子对象是独立的,所以没有变

 

以上是关于python 的深拷贝与浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

python的深拷贝与浅拷贝

python中的深拷贝与浅拷贝

[随笔重写] Python3 的深拷贝与浅拷贝

Python中的深拷贝与浅拷贝

Python中的深拷贝与浅拷贝

python的深拷贝与浅拷贝