栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

如何理解python中的赋值、深浅拷贝

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何理解python中的赋值、深浅拷贝

一、定义

首先要理解这里说的“拷贝”,现实生活中的拷贝是产生一份一模一样的东西,程序里面的拷贝是产生两个地址(这俩个地址是不一样的),指向同一块存储的内容。
理解了这个的话,对于深浅拷贝就很好理解了。

  • 赋值:等价于对象引用,被赋值的对象与原对象指向相同的内存地址和内容。
  • 浅拷贝:只拷贝了父对象,不会拷贝内部的子对象。这就意味着父对象的内存地址发生了变化,但是子对象的内存地址还是一样的。
  • 深拷贝:完全拷贝了父对象和子对象。
二、实现方式
  • 赋值:用“=”
  • 浅拷贝:对于列表、集合等可以采用切片方式,通用方式采用copy模块的copy()方法。
  • 深拷贝:采用copy模块的deepcopy()方法。
三、举例:
  • 赋值

    可以看出复制前后,两个变量完全一样。
  • 浅拷贝

    由于浅拷贝只拷贝了父对象,内部的子对象还是保持原来的地址指向和内容。所以如果修改l1外部的值,l2不会跟着变化。但是如果修改列表内部的列表时,l1和l2都会变。

    下图可以看到,由于浅拷贝中拷贝了父对象,内部子对象l1[3]和l2[3]的内存地址指向完全一样,所以如果对这部分内容修改的话,l1和l2就都会发生变化。
  • 深拷贝
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/948691.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号