Python中的深拷贝与浅拷贝

Posted 黑马程序员官方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的深拷贝与浅拷贝相关的知识,希望对你有一定的参考价值。

文章目录


1. python中可变和不可变

  • 可变类型(mutable),创建后可以继续修改对象的内容(值)

    字典、列表

  • 不可变类型(unmutable) ,一旦创建就不可修改的对象(值)

    数字, 字符串,元组

    当内容发生修改,计算机重新分配一块内存空间

2. 简单可变类型拷贝

  • 深拷贝:

    • 会产生新的空间
    • 能够保持各自的独立性
    • 如果拷贝的对象,子对象也会拷贝(产生新的空间)
  • 浅拷贝

    • 不会产生新的空间
    • 源对象和副本对象指向同一个空间
    • 如果拷贝的对象,子对象不会拷贝(不会产生新的空间)
  • 简单可变类型的拷贝总结:

    简单可变类型的数据不管深拷贝还是浅拷贝,都会产生新的空间,而且保持各自的独立性

3. 复杂可变类型拷贝

  • 复杂可变类型的深浅拷贝问题
    • 浅拷贝,拷贝的是顶层对象的值,子对象不会拷贝(只是引用子对象)
    • 深拷贝,拷贝的顶层对象和对象的子对象,子对象会产生新的内存空间

4. 简单不可变类型拷贝

  • 简单不可变类型
    • copy() 浅拷贝,副本和源指向同一个空间
    • deepcopy() 浅拷贝,副本和源指向同一个空间

5. 复杂不可变类型拷贝

  • 复杂不可变类型的拷贝问题
    • 浅拷贝, 直接引用
    • 深拷贝,看数据具体是可变还是不可变的,如果数据是可变的,会产生新的空间,保持数据的独立性

6. 切片拷贝、字典拷贝

  • 切片拷贝: 浅拷贝(如果是简单可变类型,底层会产生新的空间)
  • 字典拷贝: 浅拷贝

以上是关于Python中的深拷贝与浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

Python中的深拷贝与浅拷贝

Python中的深拷贝与浅拷贝

Python中的深拷贝与浅拷贝

python的深拷贝与浅拷贝

[随笔重写] Python3 的深拷贝与浅拷贝

python 的深拷贝与浅拷贝