赋值:
b = a
拷贝:
b = a.copy()
上面的两行代码究竟有什么不同呢?带着这个问题,继续
看了上面这张图,相信大家已经对直接赋值和拷贝有了一个比较清楚的认识。
直接赋值:复制一个对象的引用给新变量
拷贝:复制一个对象到新的内存地址空间,并且将新变量引用到复制后的对象
我们的深浅拷贝只是对于可变对象来讨论的。 不熟悉的朋友需要自己去了解可变对象与不可变对象哦。
1. 对象的嵌套引用
a = { “list”: [1,2,3] }
上面的代码,在内存中是什么样子的呢?请看下图:
原来,在我们的嵌套对象中,子对象也是一个引用。
1. 浅拷贝
如上图所示,我们就可以很好的理解什么叫做浅拷贝了。
浅拷贝:只拷贝父对象,不会拷贝对象的内部的子对象。内部的子对象指向的还是同一个引用
上面 的 a 和 c 是一个独立的对象,但他们的子对象还是指向统一对象
1.1 浅拷贝的方法
.copy()
a = {“list”: [1,2,3] }
b = a.copy()
列表切片[:]
a = [1,2,3,[1,2,3]]
b = a[1:]
a = [1,2,3,[1,2,3]]
b = []
for i in a:
b.append(i)
1.2 浅拷贝的影响
a = {“list”:[1,2,3]}
b = a.copy()
a[“list”].append(4)
print(a)
{‘list’: [1, 2, 3, 4]}
print(b)
{‘list’: [1, 2, 3, 4]}
在上面的例子中,我们明明只改变 a 的子对象,却发现 b 的子对象也跟着改变了。这样在我们的程序中也许会引发很多的BUG。
2. 深拷贝
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!