python浅拷贝和深拷贝
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python浅拷贝和深拷贝相关的知识,希望对你有一定的参考价值。
今天写兑换码时,玩家兑换兑换码时,拿到了上个兑换码的奖励,还一直怀疑,mysql取该兑换码那个环节出错了,实际上是直接引用了全局常量里的数据。导致后面全局常量的数据用的是上个兑换码的奖励内容。
今天就来说说前拷贝和深拷贝之分吧!
浅拷贝:
copy.copy:拷贝内容
浅拷贝会生成一个新的对象,但是还是会使用原始数据的引用(地址),对可变类型操作会使用一个新的对象, 对不可变类型操作不会产生新的对象(list,dict,),并修改对应的值。
深拷贝:
copy.deepcopy:完全拷贝内容
深拷贝会生成一个新的对象,原始对象里的元素,都会重新生成一份。
--------------------------------------------------------------
The difference between shallow and deep copying is only relevant for compound objects (objects that contain other objects, like lists or class instances):
浅拷贝和深拷贝的差别只与复合对象(包含其他对象的对象,如列表或类实例)有关:
- A shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original.
- 浅拷贝构造一个新的复合对象,然后(在尽可能的程度)插入引用到它的对象在原始的对象插入。
- A deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the origin
- 深拷贝构建一个新的复合对象,然后递归的插入到它的对象在原始的对象
Two problems often exist with deep copy operations that don’t exist with shallow copy operations:
- Recursive objects (compound objects that, directly or indirectly, contain a reference to themselves) may cause a recursive loop.
- Because deep copy copies everything it may copy too much, e.g., administrative data structures that should be shared even between copies.
以上是关于python浅拷贝和深拷贝的主要内容,如果未能解决你的问题,请参考以下文章