import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
b = a #赋值,传对象的引用
c = copy.copy(a) #对象拷贝,浅拷贝
d = copy.deepcopy(a) #对象拷贝,深拷贝
e = a[:]
'''
输出结果
a: [1, 2, 3, 4, ['a', 'b']]
b: [1, 2, 3, 4, ['a', 'b']]
c: [1, 2, 3, 4, ['a', 'b']]
d: [1, 2, 3, 4, ['a', 'b']]
e: [1, 2, 3, 4, ['a', 'b']]
'''
a.append(5)
'''
输出结果
a: [1, 2, 3, 4, ['a', 'b'], 5]
b: [1, 2, 3, 4, ['a', 'b'], 5]
c: [1, 2, 3, 4, ['a', 'b']]
d: [1, 2, 3, 4, ['a', 'b']]
e: [1, 2, 3, 4, ['a', 'b']]
'''
a[4].append('ccc')
'''
输出结果
a: [1, 2, 3, 4, ['a', 'b', 'ccc'], 5]
b: [1, 2, 3, 4, ['a', 'b', 'ccc'], 5]
c: [1, 2, 3, 4, ['a', 'b', 'ccc']]
d: [1, 2, 3, 4, ['a', 'b']]
e: [1, 2, 3, 4, ['a', 'b', 'ccc']]
'''
1、b = a: 赋值引用,a 和 b 都指向同一个对象。
2、b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
3、b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。