1、浅拷贝、深拷贝是什么

标准类型中的列表、字典、Set集合和自定义类型的拷贝都涉及到浅拷贝和深拷贝。字符串和元组是不可变序列,值一改变就自动变成新变量;值类型存储的真实的值,而引用类型存储的是指针;
浅拷贝:给新变量分配新的内存,内存中的元素引用还是原元素
深拷贝:给新变量分配新的内存,并且也分配新内存存储着原元素的值

指针是一个变量,其值为另一个变量的地址

浅拷贝例子:
Python之浅拷贝和深拷贝

深拷贝例子:
Python之浅拷贝和深拷贝

2、区别

如果不考虑缓存机制,示意图如下
Python之浅拷贝和深拷贝

3、使用浅拷贝和深拷贝的方法

  • 浅拷贝
    列表:list(object)、copy.copy()
    字典:dict(object)、copy.copy()
    Set集合:
    自定义类型:copy.copy()

  • 深拷贝
    列表:copy.deepcopy()
    字典:copy.deepcopy()
    Set集合:
    自定义类型:copy.deepcopy()

4、浅拷贝和深拷贝的应用场景

浅拷贝应用在对两个及以上引用对象时,共享元素的值,特别注意是共享的是元素的值,如果是其一对象,新增或删除元素,其它对象是不会新增或删除元素的,毕竟对象是重新分配的内存

深拷贝是完全没有任何联系的对象,新增、删除元素,或者修改元素的值,都不会对其他对象有影响

相关文章:

  • 2021-05-25
  • 2021-09-29
  • 2021-09-24
  • 2018-11-15
  • 2018-09-30
  • 2021-05-15
猜你喜欢
  • 2022-01-01
  • 2021-10-04
  • 2021-08-27
  • 2021-12-27
  • 2021-06-14
  • 2021-06-20
  • 2021-07-04
相关资源
相似解决方案