码迷,mamicode.com
首页 > 编程语言 > 详细

python 对象克隆

时间:2020-05-06 01:00:53      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:复合   之间   引用   包含   数据   一个   print   复制   范围   

  • copy.copy(x): 返回x的浅层复制
  • copy.deepcopy(x): 返回x的深层复制

一个 浅层复制 会构造一个新的复合对象,然后(在可能的范围内)将原对象中找到的 引用 插入其中。
一个 深层复制 会构造一个新的复合对象,然后递归地将原始对象中所找到的对象的 副本 插入。

深度复制操作通常存在两个问题, 而浅层复制操作并不存在这些问题:

  • 递归对象 (直接或间接包含对自身引用的复合对象) 可能会导致递归循环。
  • 由于深层复制会复制所有内容,因此可能会过多复制(例如本应该在副本之间共享的数据)。
import copy

a = {"a": 1}
b = {"a": a}

c = b.copy()
a[‘a‘] = 10

print(b)    # {‘a‘: {‘a‘: 10}}
print(c)    # {‘a‘: {‘a‘: 10}}


c = copy.deepcopy(b)
a[‘a‘] = 1
print(b)    # {‘a‘: {‘a‘: 1}}
print(c)    # {‘a‘: {‘a‘: 10}}

python 对象克隆

标签:复合   之间   引用   包含   数据   一个   print   复制   范围   

原文地址:https://www.cnblogs.com/iFanLiwei/p/12833840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!