深拷贝、浅拷贝、赋值你就看这篇吧
-
赋值:对象的赋值就是一个简单的对象引用,它不会开辟新的内存空间,只是复制了对象的引用,所指向的内容和 id 都是相同的。
-
浅拷贝:浅拷贝会创建新的对象,新对象的内容是原对象第一层对象的引用。修改深层内容对原对象会有影响。实现方式:切片、工厂函数、copy模块中的copy()函数。
a = ['z','x','c']
# 切片操作:
b = a[:] 或者 b = [x for x in a];
# 工厂函数:
b = list(a);
# copy 函数:
b = copy.copy(a);
- 深拷贝:深拷贝只有一种实现方式,copy模块中的 deepcopy() 函数。深拷贝与浅拷贝不同的是,它会拷贝原对象中的所有元素,包括多层嵌套的元素,它的空间和时间开销会比较高,修改原对象的任何内容对新对象都不会有影响。