浅谈深浅拷贝

本文介绍了Python中对象赋值的引用特性,以及浅拷贝和深拷贝的区别。浅拷贝通过copy()函数实现,只复制对象的引用,改变会影响原对象;深拷贝通过deepcopy()函数执行,创建全新对象,改变互不影响。切片操作和工厂函数如list()会产生浅拷贝。理解这些概念对于避免意外修改至关重要。
摘要由CSDN通过智能技术生成

对象的赋值就是简单的引用,a = [1,2,3], b=a, 在上述情况下,a和b是一样的,他们指向同一片内存,b不过是a的别名,是引用,我们可以使用b is a 去判断,返回True,表名他们地址相同内容也相同,也可以使用id()函数来查看.看两个列表地址是否相同.

深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。在Python中,我们使用函数deepcopy()执行深拷贝

拷贝不可变对象(深拷贝):产生新的对象,开辟新的内存空间,改变互不影响。

 而浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。我们使用函数function()执行浅拷贝

切片操作是浅拷贝

工厂函数是浅拷贝:lst1 = list(lst)

copy函数:lst1 = copy.copy(lst)

 注意!!!!!!!!!!!!

     拷贝不可变数据类型时,只是增加一个指向原对象的引用,改变会互相影响。

代码理解:

import copy

b=copy.copy(a)  # 浅拷贝

b=copy.deepcopy(a)  # 深拷贝
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值