浅拷贝和深拷贝的概念与值拷贝和指针拷贝(引用拷贝)有关 浅拷贝 “指针拷贝 深拷贝 值拷贝

滴滴滴--你不是爱拖延,而是爱逃避 / 2024-10-11 / 原文

在Python中,浅拷贝和深拷贝的概念与值拷贝和指针拷贝(引用拷贝)有关,但它们并不完全相同。下面是它们之间的关系和区别:

  1. 浅拷贝(Shallow Copy):

    • 类似于“指针拷贝”或“引用拷贝”。
    • 浅拷贝创建了一个新的对象,但是它所含的容器对象(例如列表、字典、类的实例等)仍然指向原始对象中的容器对象。
    • 对于不可变类型(如整数、浮点数、字符串、元组),浅拷贝会复制其值。
    • 对于可变类型,浅拷贝只是复制了容器对象的引用,而不是容器对象本身。因此,如果修改了复制后的对象中的可变元素,原始对象也会受到影响。
  2. 深拷贝(Deep Copy):

    • 类似于“值拷贝”。
    • 深拷贝创建了一个新的对象,并且递归地复制了原始对象中所有的子对象。
    • 对于不可变类型和可变类型,深拷贝都会复制其值,确保新对象和原始对象完全独立,修改新对象不会影响原始对象。

在Python中,浅拷贝可以通过copy模块的copy()函数实现,而深拷贝可以通过copy模块的deepcopy()函数实现。