zoukankan      html  css  js  c++  java
  • Python 知识要点:copy 和 deepcopy

    https://www.cnblogs.com/hokky/p/8476698.html

    对于简单的 object,用 shallow copy 和 deep copy 没区别

    复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一个元素,你的 copy 就会跟着一起变。这跟我们直觉上对「复制」的理解不同。

    【copy】

    浅复制(shallow copy)并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了

     

    【deepcopy】

    我们寻常意义的复制就是深复制(deep copy),即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。 

    import copy
    
    
    class MyCopy:
        def __init__(self, value):
            self.value = value
    
        def __repr__(self):
            return str(self.value)
    
    
    foo = MyCopy(7)
    
    a = ["foo", foo]
    b = a[:]
    c = list(a)
    d = copy.copy(a)
    e = copy.deepcopy(a)
    
    a.append("abc")
    foo.value = 17
    
    print("original: %r
     slice: %r
     list(): %r
     "
          "copy(): %r
     deepcopy(): %r
    "
          % (a, b, c, d, e))
    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    BUG记录之 Database Connection Can’t Be Open!
    C#基础拾遗03注册表保存用户设置
    JQuery Ajax小磨合1
    SQL Server几个常用Date函数(二)
    浅谈设计模式01策略模式
    C#基础拾遗02XML串行化
    SQL Server 2008 R2学习心得
    WebService重载问题
    SQL Server几个常用date函数(一)
    C#获取打印机列表
  • 原文地址:https://www.cnblogs.com/dc2019/p/13233947.html
Copyright © 2011-2022 走看看