码迷,mamicode.com
首页 > 编程语言 > 详细

python浅拷贝和深拷贝

时间:2016-05-17 06:20:03      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

  今天写兑换码时,玩家兑换兑换码时,拿到了上个兑换码的奖励,还一直怀疑,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浅拷贝和深拷贝

标签:

原文地址:http://www.cnblogs.com/2wind/p/5500109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!