美文网首页
Python 深拷贝与浅拷贝

Python 深拷贝与浅拷贝

作者: 又绿江南岸1990 | 来源:发表于2019-08-09 15:13 被阅读0次

    通过一个简单的例子来理解深拷贝与浅拷贝:

    例1:比如有如下一段代码:

    普通的赋值操作就相当于浅拷贝,不会复制对象中的内容,只会将原有的内存地址赋值给新变量,这两个对象指向同一块内存地址,因此,两个对象的ID值是相同的。

    例2:在上一代码基础上进行深拷贝操作

    对nums进行深拷贝操作后,不论是外层对象,还是内层引用的对象,都会重新开辟一个新的内存空间,因此进行深拷贝后的ID值是不同的。

    例3:对列表进行添加操作

    例4:进行浅拷贝操作

    当对象中的元素又引用了其他对象时,copy()方法只会对外层对象创建新的内存空间,内层引用不会开辟新的内存空间,依然使用原来的对象,因此当原列表进行添加操作后,会影响copy()方法创建出的对象。

    例5:将nums的类型由列表变为元组

    将nums变为元组后,deepcopy()方法仍会开辟新的内存空间,内层对象不会受原来对象变化的影响

    例6:将例5中的deepcopy()换成copy()

    相关文章

      网友评论

          本文标题:Python 深拷贝与浅拷贝

          本文链接:https://www.haomeiwen.com/subject/guqhjctx.html