如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短。
如果B没变,那就是深拷贝,自食其力。不仅A会影响B,B也会影响A,即互相影响
import copy a = [1,2,['x','y']] b = a #全影响 c = copy.copy(a) #浅拷贝,第一层不影响,第二层有影响 d = copy.deepcopy(a) #深拷贝,互不影响 a.append(3) a[2].append('z') a.append(['x','y']) print('a1=',a) print('b1=',b) print('c1=',c) print('d1=',d) b.append(4) b[2].append('b') print('b4=',b) print('a4=',a) c.append(5) c[2].append('c') print('c5=',c) print('a5=',a) d.append(6) d[2].append('d') print('d6=',d) print('a6=',a)
a1= [1, 2, ['x', 'y', 'z'], 3, ['x', 'y']] b1= [1, 2, ['x', 'y', 'z'], 3, ['x', 'y']] c1= [1, 2, ['x', 'y', 'z']] d1= [1, 2, ['x', 'y']] b4= [1, 2, ['x', 'y', 'z', 'b'], 3, ['x', 'y'], 4] a4= [1, 2, ['x', 'y', 'z', 'b'], 3, ['x', 'y'], 4] c5= [1, 2, ['x', 'y', 'z', 'b', 'c'], 5] a5= [1, 2, ['x', 'y', 'z', 'b', 'c'], 3, ['x', 'y'], 4] d6= [1, 2, ['x', 'y', 'd'], 6] a6= [1, 2, ['x', 'y', 'z', 'b', 'c'], 3, ['x', 'y'], 4]