Python之浅copy,深copy,赋值

代码:

以上代码表示a于b在计算机中的索引是一样的地方,只是用不同的形式去表现出来的,这种情况下,如果改变b中的值,那么a中的值也改变了。

可以用id来看索引。

结果:这就反应出Python中如果一个东西等于另外一个东西,是把其索引赋过去了,也就是指针。


关于浅copy

结果:

以上结果反应出用copy.copy的方式不是吧a的索引赋给c(从输出False可以反应出来),而是在硬盘上新开辟出一块地方,这块

新开辟出来的地方和a的地方是不一样的,也就是地址不同,然后把a地址里面的数据复制给新开辟出来的地方来填。

关于浅copy更深入的理解:

代码:

结果:

以上结果说明,用copy.copy赋值过来的东西完全的地址是不一样的,而各个元素的地址是相同的,在这种情况下,若改变

a中一维的值,c中一维的值不会改变,若改变a中二维里面的某一个值,c中对应的值会改变。这就是copy的奇怪之处,也是其独特作用。

综合来说:当使用浅拷贝时,python只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已,这也就能说明为什么里面的值对于二维能够改变,而对于一维不能改变的道理了。


三、deepcopy

完全新个体,不会对原对象产生任何影响。

有篇文章写得很好:这里

猜你喜欢

转载自blog.csdn.net/weixin_40849273/article/details/82849418
今日推荐