这礼拜碰到一些问题,然后意识到基础知识一段时间没巩固的话,还是有遗忘的部分,还是需要温习,这里做份笔记,记录一下
前续
先简单描述下碰到的题目,要求是写出2个print的结果
可以看到,a指向了一个列表list对象,在python中,这样的赋值语句,其实内部含义是指a指向这个list所在内存地址,可以看作类似指针的概念。
而b,注意,他是把a对象包裹进一个list,并且乘以5,所以b的样子应该是一个大list,里面元素都是a
而当a对象进行了append操作后,其实,隐含的意思是,内存中的这个list进行了修改,所有对此对象进行引用的对象,都会发生改变
我将a的id打印出来,并且,同时打印b这个对象中所包含的元素a的id,这样可以看到,在b这个list中,每个元素的id,和a是一样的
我们可以看到,a对象的id(内存地址)为10892296,虽然b把a包裹进了新的list,但是,这个元素引用的,还是相同地址的对象,可以用下图来解释
之后,我们对a进行了append操作,由于list是一个可变对象,

本文通过实例解析Python中的引用机制、浅拷贝和深拷贝。介绍了如何通过浅拷贝(如B = A[:])和深拷贝(如copy.deepcopy())创建对象的副本,并探讨了它们在处理可变对象如列表时的区别,特别是涉及到嵌套对象的情况。文章强调,浅拷贝仅复制对象引用,而深拷贝则递归复制所有嵌套对象,确保完全独立。

224

被折叠的 条评论
为什么被折叠?



