上海城乡建设网站首页北京网站建设公司服务有哪些
上海城乡建设网站首页,北京网站建设公司服务有哪些,qfd 网站开发,网站正在建设页面对象引用、浅拷贝、深拷贝(拓展、难点、重点)
Python中#xff0c;对象的赋值#xff0c;拷贝#xff08;深/浅拷贝#xff09;之间是有差异的#xff0c;如果使用的时候不注意#xff0c;就可能产生意外的结果
其实这个是由于共享内存导致的结果
拷贝#xff1a;原则…对象引用、浅拷贝、深拷贝(拓展、难点、重点)
Python中对象的赋值拷贝深/浅拷贝之间是有差异的如果使用的时候不注意就可能产生意外的结果
其实这个是由于共享内存导致的结果
拷贝原则上就是把数据分离出来复制其数据并以后修改互不影响。
先看 一个非拷贝的例子
使用赋值对象引用
赋值数据完全共享
赋值是在内存中指向同一个对象
如果是可变(mutable)类型比如列表修改其中一个另一个必定改变
如果是不可变类型 (immutable) ,比如字符串修改了其中一个另一个并不会变 a [1, 2, 3]a
[1, 2, 3]b ab
[1, 2, 3]a[0] surprisea
[surprise, 2, 3] b
[surprise, 2, 3]b[0] I hate surprisesb
[I hate surprises, 2, 3]a
[I hate surprises, 2, 3]
浅拷贝copy
浅拷贝数据半共享复制其数据独立内存存放但是只拷贝成功第一层 a [1, 2, 3]b a.copy()c list(a)d a[:] a[0] integer lists are boringa
[integer lists are boring, 2, 3]b
[1, 2, 3]c
[1, 2, 3]d
[1, 2, 3]
深拷贝deepcopy
深拷贝数据完全不共享复制其数据完完全全放独立的一个内存完全拷贝数据不共享
深拷贝就是完完全全复制了一份且数据不会互相影响因为内存不共享。
深拷贝的方法有 import copya [1, 2, 3, [1, 2, 3]]b copy.copy(a)a[3][0] surprisesb
[1, 2, 3, [surprises, 2, 3]] c copy.deepcopy(b)b[3][0] i hate surprisesc
[1, 2, 3, [surprises, 2, 3]]b
[1, 2, 3, [i hate surprises, 2, 3]]
总结
copy.copy 浅拷贝 只拷贝父对象不会拷贝对象的内部的子对象。 copy.deepcopy 深拷贝 拷贝对象及其子对象
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92405.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!