深浅拷贝对于可变对象地址的区别import copy
stuff = [[1, 2], {1, 2}, {1: 'a', 2: 'b'}, (1, 2), 'abc', 123]
stuff_deep = copy.deepcopy(stuff)
stuff_shallow = stuff.copy()
i = 0
while i < len(stuff):
print(type(stuff[i]), id(stuff[i]), '\t', stuff[i], 'origin')
print(type(stuff_deep[i]), id(stuff_deep[i]), '\t', stuff_deep[i], 'deep')
print(type(stuff_shallow[i]), id(stuff_shallow[i]), '\t', stuff_shallow[i], 'swallow')
print()
i += 1
# 其中浅拷贝第一层对象地址不改变 深拷贝的可变对象地址发生改变
<class 'list'> 1274468741512 [1, 2] origin
<class 'list'> 1274468741768 [1, 2] deep
<class 'list'> 1274468741512 [1, 2] swallow
<class 'set'> 1274468719080 {1, 2} origin
<class 'set'> 1274468810824 {1, 2} deep
<class 'set'> 1274468719080 {1, 2} swallow
<class 'dict'> 1274466093240 {1: 'a', 2: 'b'} origin
<class 'dict'> 1274466438984 {1: 'a', 2: 'b'} deep
<class 'dict'> 1274466093240 {1: 'a', 2: 'b'} swallow
<class 'tuple'> 1274468742216 (1, 2) origin
<class 'tuple'> 1274468742216 (1, 2) deep
<class 'tuple'> 1274468742216 (1, 2) swallow
<class 'str'> 1274466032112 abc origin
<class 'str'> 1274466032112 abc deep
<class 'str'> 1274466032112 abc swallow
<class 'int'> 140735165477072 123 origin
<class 'int'> 140735165477072 123 deep
<class 'int'> 140735165477072 123 swallow