按照自己的理解写出来的,仅供参考。
直接赋值:对象的引用(变量别名);
浅拷贝(copy):拷贝父对象,不会拷贝子对象(对象的内部的子对象,比如{1:[1,2,3]},[2,3,4]就是子对象);
深拷贝(deepcopy):完全拷贝父对象和子对象。
简单举例说明:
import copy
a = {1: [1, 2, 3]}
b = a.copy()
print(a, b)
{1: [1, 2, 3]} {1: [1, 2, 3]}
a[1].append(4)
print(a, b)
{1: [1, 2, 3, 4]} {1: [1, 2, 3, 4]}
c = copy.deepcopy(a)
a[1].append(5)
print(a, b, c)
{1: [1, 2, 3, 4, 5]} {1: [1, 2, 3, 4, 5]} {1: [1, 2, 3, 4]}
示例2:
import copy
a = [1, 2, 3, 4, ["a", "b"]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append("c")
print(a, b, c, d)
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]
浅拷贝,c拷贝父对象,不拷贝子对象,当a父对象改变,子对象改变,c的父对象不变,子对象随之改变;
深拷贝,d拷贝父对象和子对象,当a父对象和子对象都发生改变后,d不变。
希望对你有帮助。
|