python之浅拷贝和深拷贝

Posted

tags:

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

1、浅拷贝

1>赋值:从下面的例子我们可以看到赋值之后新变量的内存地址并没有发生任何变化,实际上python中的赋值操作不会开辟新的内存空间,它只是复制了新对象的引用,也就是说除了b这个名字以外,没有其他的内存开销,这时如果修改了a的值,就会影响b的值,同理,如果修改b的值,也会影响a的值。

技术分享

2>浅拷贝是对引用的拷贝,它只拷贝了副对象,所以说id(a)!=id(c),那么对象内部的资源依然是引用,所以内部id(a[0])==id(c[0])、id(a[2][0])==id(c[2][0]),那如果有嵌套的元素,修改浅拷贝的值,原始变量同时也被修改

技术分享

2、深拷贝

深拷贝是对对象资源的拷贝,id(a)!=id(d),它的内部资源如果没有嵌套的情况下。id(a[0])==id(d[0]);如果有嵌套的情况下,id(a[2])!=id(d[2])

技术分享

 所有参数在python里都是按引用传递

如果你在函数里修改了参数,原始的参数也被改变了。

如对列表进行操作之后原来的列表会被改变。

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

python之浅拷贝和深拷贝

python之浅拷贝深拷贝

pyhton之浅拷贝(copy)和深拷贝(deepcopy)详解,举例说明

java克隆之浅拷贝和深拷贝

lua踩坑之浅拷贝与深拷贝

lua踩坑系列之浅拷贝与深拷贝