python深浅拷贝区别


本文摘自php中文网,作者爱喝马黛茶的安东尼,侵删。

在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。

浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制

深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。

深浅拷贝的作用

1,减少内存的使用
2,以后在做数据的清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据。

相关推荐:《Python视频教程》

浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

1

2

3

4

5

>>>a = {1: [1,2,3]}

>>> b = a.copy()

>>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]})

>>> a[1].append(4)

>>> a, b({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

深度拷贝需要引入 copy 模块:

1

2

3

4

5

>>>import copy

>>> c = copy.deepcopy(a)

>>> a, c({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

>>> a[1].append(5)

>>> a, c({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

1、b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

aaa.png

2、b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

sss.png

以上就是python深浅拷贝区别的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python如何终止线程

Python数据结构与算法之链表定义的使用详解

怎么在Python开发界面

Python招聘要求高吗

Python需要配置环境吗

Python中的内置函数分享

Python函数与方法的区别

Python爬虫 使用真实浏览器打开网页的两种方法总结

pandas修改dataframe列名的方法介绍(代码示例)

Python for循环语句怎么写

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...