浅拷贝和深拷贝理解

时间:2023-01-29 19:49:45
import copy
x = {'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
y = copy.deepcopy(x)
y['username'] = 'mlh'

y['machines'].remove('bar')

x,y
({'machines': ['foo', 'bar', 'baz'], 'username': 'admin'},
 {'machines': ['foo', 'baz'], 'username': 'mlh'})
浅拷贝只是拷贝了对象的最上层,所以上层改变,拷贝对象也跟着改变,但下一层的对象在内存的位置还是一个;

深拷贝是全部拷贝了,拷贝对象的全部要素都复制到内存的另外一个地方,所以原拷贝对象改变不影响拷贝后的内存变化。