零基础小白Python入门必看:通俗易懂,搞定深浅拷贝( 二 )


【零基础小白Python入门必看:通俗易懂,搞定深浅拷贝】再看看下面的代码
a = [1, 2, (3, 4)]b = a.copy()print(id(a)) # 59162536print(id(b)) # 60143400# 改变a中的可变对象a[-1] += (5, )# [1, 2, (3, 4, 5)]print(a)# [1, 2, (3, 4)]print(b)复制代码对于元组(3, 4) , 因为元组不可变 , 所以在元组中新增了元素5 , 实际上是生成了新的元组对象 。 而b列表中的元组引用并没有发生改变 。
通过上面的两个例子可以看出浅拷贝可能会带来的弊端 , 在使用中需要大家进行相应的判断 。 或者去完整的拷贝某个对象 , 即 深拷贝 。
零基础小白Python入门必看:通俗易懂,搞定深浅拷贝文章插图
深拷贝所谓深拷贝呢 , 就是重新分配一个内存空间(新对象) , 将原对象中的所有元素通过递归的方式进行拷贝到新对象中 。
在Python中 通过copy.deepcopy() 来实现深拷贝 。
import copya = [1, 2, (3, 4)]# 深拷贝b = copy.deepcopy(a)# 因为生成了新的对象所以 , 返回Falseprint(a is b)a[-1] += (5,)a.append(6)print(a) # [1, 2, (3, 4, 5), 6]print(b) # [1, 2, (3, 4)] 深拷贝后的对象 , 根本不受原对象的任何影响复制代码...
最后多说一句 , 小编是一名python开发工程师 , 这里有我自己整理了一套最新的python系统学习教程 , 包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等 。 想要这些资料的可以关注小编 , 并私信“01”即可领取 。


推荐阅读