初学 Python 笔记【三十二】copy 和 deepcopy

【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\n slice: %r\n list(): %r\n "
      "copy(): %r\n deepcopy(): %r\n"
      % (a, b, c, d, e))

 

你可能感兴趣的:(初学 Python 笔记【三十二】copy 和 deepcopy)