深拷贝和浅拷贝 python,python中深拷贝和浅拷贝
深层拷贝和浅层拷贝之间最根本的区别在于,你是否实际获得了一个对象的拷贝,而不是一个引用。假设B复制A,修改A时,看B是否变化:
如果B也随之变化,说明是浅抄,取者短!(在堆内存中修改相同的值)
b如果没变,说明是深度复制,自力更生!(修改堆内存中的不同值)
ShallowCopy只添加了一个指向现有内存地址的指针。
DeepCopy是指添加一个指针,申请一个新的内存,使添加的指针指向新的内存。
使用深度拷贝时,由于浅拷贝时释放相同内存的错误,不会释放内存。
浅拷贝:仅指被拷贝的内存地址。如果原地址改变,浅拷贝对象也会相应改变。
深层复制:在计算机中创建一个新的内存地址来存储复制的对象。
但是在python中,对于浅拷贝和深拷贝,需要区分数据类型是可变的还是非边缘的。可变数据类型不可变数据类型浅拷贝只拷贝可变类型的一级对象,会开辟新的内存空间进行存储。如果子对象没有被复制,它不会为被复制的对象开辟新的内存空间,而只是复制这个对象的引用。深度复制会将对象复制到最后一个可变类型的每一层,并为每一层复制的对象开辟一个新的内存空间。如果子对象没有可变类型,就不会复制,而只会复制这个对象的引用。否则,它会将对象复制到最后一个可变类型的每一层,并为每一层复制的对象开辟一个新的内存空间。参考资料:https://www.cnblogs.com/williamjie/p/11192895.html
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。