欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python中赋值、浅拷贝和深拷贝的区别

程序员文章站 2022-05-04 11:21:37
前言文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 结论:赋值:只是将变量指向了原对象,其实就是对象的引用(别名);浅拷 ......

前言
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

ps:如有需要python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/a6zvjdun

结论:
赋值:只是将变量指向了原对象,其实就是对象的引用(别名);
浅拷贝(copy):copy 模块的 copy 方法,只拷贝父对象,不会拷贝对象的内部的子对象;
深拷贝(deepcopy):copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

实例:

 

复制可变对象:

Python中赋值、浅拷贝和深拷贝的区别

 

 

复制可变对象执行结果:

Python中赋值、浅拷贝和深拷贝的区别

可以看到,复制可变对象时,赋值并没有生成新的对象,只是将变量指向了原对象,而浅拷贝和深拷贝都生成了新的对象,但是浅拷贝没有复制对象的子对象,所以修改子对象的值后,浅拷贝生成的新对象的值也发生了变化,而深拷贝生成的新对象并没有随着被拷贝对象子对象的修改而变化。

 

 

复制不可变对象:

Python中赋值、浅拷贝和深拷贝的区别

 

 

复制不可变对象执行结果:

Python中赋值、浅拷贝和深拷贝的区别

对比上面复制可变对象执行结果可以看出,复制不可变对象时,区别是浅拷贝也没有生成新的对象,而是和赋值一样,直接指向了原对象。

如果你处于想学python或者正在学习python,python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的python教程。获取方式,私信小编 “ 资料 ”,即可免费获取哦!