Python中copy()和deepcopy()有何本质差异?

2026-04-30 17:350阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1866个文字,预计阅读时间需要8分钟。

Python中copy()和deepcopy()有何本质差异?

目录+前言+Python的数据存储方式+前言+copy()与deepcopy()之间的区别+前言+Python对于数据的存储方式

首先,直接上结论:

- 我们常说的复制就是深复制,即将被复制的对象完全复制一份,包括其属性和属性指向的对象。- 即将被复制的对象完全复制一份,包括其属性和属性指向的对象。

目录
  • 前言
  • python的数据存储方式

前言

copy()与deepcopy()之间的区分必须要涉及到python对于数据的存储方式。

首先直接上结论:

  • 我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
  • 而浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。

对于简单的 object,用 shallow copy 和 deep copy 没区别

复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一个元素,你的 copy 就会跟着一起变。这跟我们直觉上对「复制」的理解不同。

阅读全文

本文共计1866个文字,预计阅读时间需要8分钟。

Python中copy()和deepcopy()有何本质差异?

目录+前言+Python的数据存储方式+前言+copy()与deepcopy()之间的区别+前言+Python对于数据的存储方式

首先,直接上结论:

- 我们常说的复制就是深复制,即将被复制的对象完全复制一份,包括其属性和属性指向的对象。- 即将被复制的对象完全复制一份,包括其属性和属性指向的对象。

目录
  • 前言
  • python的数据存储方式

前言

copy()与deepcopy()之间的区分必须要涉及到python对于数据的存储方式。

首先直接上结论:

  • 我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
  • 而浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。

对于简单的 object,用 shallow copy 和 deep copy 没区别

复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一个元素,你的 copy 就会跟着一起变。这跟我们直觉上对「复制」的理解不同。

阅读全文