深拷贝、浅拷贝

如何区分深拷贝与浅拷贝,简单点来说,就是假设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]

 

posted @ 2022-01-04 20:45  七彩木兰  阅读(41)  评论(0编辑  收藏  举报