位置: IT常识 - 正文

Python深浅拷贝是什么(python深拷贝与浅拷贝区别)

编辑:rootadmin

推荐整理分享Python深浅拷贝是什么(python深拷贝与浅拷贝区别),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python深拷贝和浅拷贝详解,python深拷贝和浅拷贝应用场景,python中深浅拷贝,python深拷贝和浅拷贝应用场景,python深拷贝浅拷贝和赋值,python深拷贝浅拷贝和赋值,python深拷贝浅拷贝,python中深浅拷贝,内容如对您有帮助,希望把文章链接给更多的朋友!

一、浅拷贝

浅拷贝是对一个对象的顶层拷贝,通俗地讲就是:拷贝了引用,并没有拷贝内容。

a=[1,2,3]print(id(a))b=aprint(b)print(id(b))a.append(4)print(a)print(b)

运行结果为:

1965053928072[1,2,3]1965053928072[1,2,3,4][1,2,3,4]

二、深拷贝

深拷贝是对于一个对象所有层次的拷贝,重新开辟内存地址。

importcopya=[1,2,3]print(id(a))#使用copy模块b=copy.deepcopy(a)#打印b的内存地址print(id(b))a.append(4)print(a)print(b)

运行结果为:

20351579696722035158105992[1,2,3,4][1,2,3]

相关推荐:《Python视频教程》

三、深浅拷贝对比

importcopya=[1,2,3]b=[4,5,6]c=[a,b]d=c#直接赋值,浅拷贝print("c的内存地址为:%s"%id(c))print("d的内存地址为:%s"%id(d))#使用copy模块#深拷贝,重新开辟内存,并内容独立e=copy.deepcopy(c)#深拷贝,重新开辟内存,但是新内容里面仍保存原来的引用f=copy.copy(c)#打印e,f的地址print("e的内存地址为:%s"%id(e))print("f的内存地址为:%s"%id(f))#改变a的值a.append(44)#打印a,b,c,d,e,fprint("a=%s"%a)print("b=%s"%b)print("c=%s"%c)print("d=%s"%d)print("e=%s"%e)print("f=%s"%f)Python深浅拷贝是什么(python深拷贝与浅拷贝区别)

运行结果为:

c的内存地址为:2514746494856d的内存地址为:2514746494856e的内存地址为:2514746494920f的内存地址为:2514746494664a=[1,2,3,44]b=[4,5,6]c=[[1,2,3,44],[4,5,6]]d=[[1,2,3,44],[4,5,6]]e=[[1,2,3],[4,5,6]]f=[[1,2,3,44],[4,5,6]]

说明:

1.c和d的内存地址一样,说明是浅拷贝,两个引用指向的是同一块内存。

2.c,e,f内存地址不一样,说明e和f都是深拷贝,都重新开辟的内存地址。

3.在a追加了元素44之后,打印的e中并有追加44,说明深拷贝,内容独立。

4.在a追加了元素44之后,打印的f中也追加44,说明f也重新开辟了内存,但是新内容里面保存的是原来的引用。

四、copy对可变和不可变对象的不同

1、可变类型使用copy

importcopya=[1,2,3]b=copy.copy(a)print(id(a))print(id(b))a.append(4)print(a)print(b)

运行结果为:

16266777178321626677715784[1,2,3,4][1,2,3]

2、不可变类型使用copy

importcopya=(1,2,3)b=copy.copy(a)print(id(a))print(id(b))

运行结果为:

20434442807042043444280704

总结:

简单的赋值是浅拷贝。

copy模块里面的copy()函数可以做一层深拷贝,虽然重新开辟了新的内存,但新内存里面仍然存放得是原来的引用。

本文链接地址:https://www.jiuchutong.com/zhishi/310670.html 转载请保留说明!

上一篇:dedecms织梦的性能选项与其它选项的设置方法(织梦是什么框架开发的)

下一篇:python logging日志的禁用(python中的logging记录日志)

  • 卖家电税是多少
  • 公司购买的意外险属于个人还是公司
  • 软件服务费280抵扣申报
  • 合并报表成本法调整为权益法
  • 普通发票验旧后当月能作废吗
  • 公司清算后资产负债表与利润表
  • 增值税退税什么时候办理
  • 货币资金包括应收票据和应收账款吗
  • 怎么作废未使用的发票
  • 营改增后哪些费用可以抵扣
  • 税收编码选错了,发票已经开出去几个月了,还有影响吗
  • 吊装费用税率
  • 营改增后企业要交哪些税
  • 中国增值税发展史
  • 发生的产品广告费
  • 金税三期个人所得税扣缴系统网络设置
  • 应纳税所得额怎么理解
  • 国税申报纳税调整项目怎么填的?
  • 个人工程款税怎么开
  • 国外消费发票可以抵扣吗
  • 存货的入账价值怎么计算
  • 固定资产更新改造替换部件怎么做账务处理
  • Linux中samba服务区怎么创建多个用户
  • 电脑开机无启动
  • windos11安卓
  • 磁盘使用量30m
  • 魁北克位置地图
  • php实现的mongodb操作类实例
  • php面向对象的三大特征
  • win10待机后无法输入密码
  • 开发商延期交房违法吗
  • 哪些货物出口不需要运输条件
  • 利润表本月数可以不填吗
  • cloa框架
  • 增值税专用发票丢了怎么补救
  • php判断用户名是否正确
  • Spring Boot 3.0 正式发布,王炸!!
  • 运费已付发票未到会计分录
  • 调账处理
  • 保函被索赔支付什么意思
  • mongodb 数据文件
  • 大学生创新创业平台
  • 企业赠送客户礼品涉税
  • 个体定额和不定额有什么区别
  • 第四季度报表和年报对不上
  • 微信发放红包如何退回去
  • 车子上公司户和个人户哪个更好
  • 其他应收款主要是什么
  • 劳务费发票是个人的吗
  • 归还股东投资款本息怎么做账
  • 利息收入的会计分录
  • 固定资产基本特点
  • 赠送产品会计分录怎么写
  • 银行利息收入如何记账
  • 职工工资如何计算天数
  • 盘盈盘亏做好记录这句好怎么说
  • 金蝶银行存款日记账
  • 支票填写的规范与常识
  • 小企业如何建账报税
  • mysql die
  • 关于读书的名言名句
  • win7安装mysql5.5
  • 为什么多出一个系统
  • ubuntu怎么root权限
  • 苹果mac双系统怎么删除
  • win10家庭版免费升级专业版密钥
  • linux系统默认启动级别
  • 深入理解新发展理念心得体会3篇
  • curl发送formdata
  • nodejs cicd
  • 删除批处理命令
  • unity怎么调用方法
  • javascript面向对象 第三方类库
  • python直接访问私有属性的简单方法
  • python27文件夹
  • no android facet found
  • 税务局上班周末上班吗
  • 个人可以免费开店的平台有哪些
  • 卷烟批发环节的消费税一箱150元
  • 个体工商户开发票怎么开
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设