深拷贝和浅拷贝 python,python中深拷贝和浅拷贝

  深拷贝和浅拷贝 python,python中深拷贝和浅拷贝

  深层拷贝和浅层拷贝之间最根本的区别在于,你是否实际获得了一个对象的拷贝,而不是一个引用。假设B复制A,修改A时,看B是否变化:

  如果B也随之变化,说明是浅抄,取者短!(在堆内存中修改相同的值)

  b如果没变,说明是深度复制,自力更生!(修改堆内存中的不同值)

  ShallowCopy只添加了一个指向现有内存地址的指针。

  DeepCopy是指添加一个指针,申请一个新的内存,使添加的指针指向新的内存。

  使用深度拷贝时,由于浅拷贝时释放相同内存的错误,不会释放内存。

  浅拷贝:仅指被拷贝的内存地址。如果原地址改变,浅拷贝对象也会相应改变。

  深层复制:在计算机中创建一个新的内存地址来存储复制的对象。

  但是在python中,对于浅拷贝和深拷贝,需要区分数据类型是可变的还是非边缘的。可变数据类型不可变数据类型浅拷贝只拷贝可变类型的一级对象,会开辟新的内存空间进行存储。如果子对象没有被复制,它不会为被复制的对象开辟新的内存空间,而只是复制这个对象的引用。深度复制会将对象复制到最后一个可变类型的每一层,并为每一层复制的对象开辟一个新的内存空间。如果子对象没有可变类型,就不会复制,而只会复制这个对象的引用。否则,它会将对象复制到最后一个可变类型的每一层,并为每一层复制的对象开辟一个新的内存空间。参考资料:https://www.cnblogs.com/williamjie/p/11192895.html

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: