Python之浅拷贝与深拷贝(二)

在看今天这篇前,可以先服用下之前的Python中数组拷贝操作(一),这样就能彻底搞清python中关于拷贝误操作的由来了。

今天会以视频的形式来让大家可以更加清晰得看到代码的一步步操作,并以配图形式让你更加清晰看到浅拷贝和深拷贝到区别。

首先,我们看一下浅拷贝的做法:

我们看到这里用的copy方法,然后将数组b的一个元素改变了值,从图上可以发现a和b数组的第二个元素其实是共享的,指向了同一个地址,所以当b数组的第二个元素改变了值,其实间接地把数组a的第二个元素也拷贝过去了,原因是什么呢?

这就是浅拷贝,浅拷贝就是拷贝最浅的第一层元素,如果第一层元素是基本数据类型,那就全部拷贝过去,而如果第一层元素是复杂类型,如数组、对象等,就仅仅会拷贝数组地址、对象地址而已;

其实你应该可以猜到深拷贝是什么样的了,看下面的视频:

这时候,我们看到用了deepcopy这个函数,从图上可以看到,这时候拷贝出来的b是完完全全一个独立的个体,跟a毫无关系,因此修改b的任何一个元素,a都不会受影响,这就是所谓的深拷贝。

深入理解浅拷贝和深拷贝的好处就是当你去复制、克隆、共享一个对象的时候,你就能因地制宜,明确地知道要用什么操作了,不仅python中如此,很多高级语言中,如C++、Java等都是有这样的特性的。

声明:来自程序员阿灏,仅代表创作者观点。链接:https://eyangzhen.com/4354.html

程序员阿灏的头像程序员阿灏

相关推荐

关注我们
关注我们
购买服务
购买服务
返回顶部