Python直接赋值、浅拷贝copy、深拷贝deepcopy 等复制方式的区别分析

在这里插入图片描述

提问:Python中经常需要复制一个对象,那么常用的复制方式有哪些?

回答=直接赋值copy浅拷贝deepcopy深拷贝


序号表示区别说明条件
1=赋值其实就是对象的引用,对象共享(别名-猫也叫咪咪、照镜子)。
2copy()浅拷贝拷贝对象,会拷贝对象的内部的对象。
3deepcopy()深拷贝完全拷贝了对象及其对象。 import copy

举例1:通过不同方式复制字典
代码:

import copy
dic = {'list': [1,2,3] }
dic1 = dic  # 赋值 传对象的引用
dic2 = dic.copy() #浅拷贝 ,对象拷贝
dic3 = copy.deepcopy(dic) #深拷贝 ,对象拷贝

dic['list'].remove(3)
print(dic)
print(dic1)  #= 赋值 :指向同一个对象,照镜子
print(dic2)  #浅拷贝 :父对象完全独立,子对象共享用
print(dic3) #深拷贝: 完全拷贝父子对象 完全独立对象 不受影响

运行结果:

 原字典 : {'list': [1, 2]}
 直接赋值=      : {'list': [1, 2]}
 浅拷贝copy     : {'list': [1, 2]}
 深拷贝deepcopy : {'list': [1, 2, 3]}

分析

  • dic1 = dic
    • = 赋值引用
    • dic 和 dic1 都指向同一个对象(共享)
      在这里插入图片描述
  • dic2 = dic.copy()
    • copy() 拷贝
    • dic 和 dic2 是一个独立的对象,但他们的子对象还是指向统一对象(是引用、共享)。
      在这里插入图片描述
  • dic3 = copy.deepcopy(dic):
    • deepcopy() 拷贝,
    • dic 和 dic2 完全拷贝对象及其对象,两者是完全独立的。
      在这里插入图片描述
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值