位置: 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记录日志)

  • 小商店如何纳税?
  • 跨年增值税发票怎么冲红
  • 当月红冲发票账务怎么处理
  • 发票超过三个月不能开
  • 长期股权投资其他综合收益什么时候转留存收益
  • 出口退税网上服务中心app
  • 什么叫税控盘清卡
  • 境外人员为境内企业提供劳务如何缴税
  • 当月用专票是增版还是增量
  • 代收房款
  • 申报状态显示申报失败
  • 取得土地无形资产的条件
  • 从事非学历教育的学校提供的教育服务免征增值税吗
  • 出口佣金可以在企业所得税前扣除吗
  • 月收入不超10万减免 具体分销售额吗
  • 个体户可以不领税控盘吗
  • 特殊性税务处理弥补亏损限额
  • 证券公司手续费怎么收
  • 高新企业奖励补贴交税吗
  • 不动产进项税为什么不能抵扣
  • 收到招标公司开的发票
  • 侵权行为 法律行为
  • 可转债发行费用税前扣除
  • win7打开软件提示0xc0000005
  • 如何删除文档中多余的页
  • 安置房项目需要环评吗
  • kb4499164安装失败怎么办
  • linux不允许root登录
  • 政策性搬迁损失扣除年度
  • 支付国外佣金税率是多少
  • 工程质保金如何做账
  • 安装windows(install windows)
  • php正则表达式匹配链接
  • 本月认证上月的进项票如何做
  • typescripte
  • js 数组去重的四种方法
  • 数据库查询框架
  • 境外企业在境内投资是否备案
  • 应交增值税一般是多少
  • python中datetime.datetime
  • html友情链接模板
  • 开具红字增值税普通发票
  • 待处理财产损益期末余额在哪方
  • sqlserver强制转换为字符
  • Windows PostgreSQL 安装图文教程
  • 福利费专票必须抵扣再转出吗
  • 制造费用主要包括哪些内容
  • 固定资产进项税率
  • 厂房测量费怎么做账
  • 公司做账开票是什么意思
  • 为什么银行结息不加入账户
  • 费用报销的凭证是什么
  • 管理费用收入缴纳增值税吗
  • 子公司提取盈余公积
  • 广告公司如何开展业务
  • 往来是啥意思
  • window怎么样
  • centos7怎么查看进程名称吗
  • win8 metro启动界面
  • linux dfs
  • lowleverfatal error怎么解决
  • linux系统基本操作命令
  • win10mobile最新版本
  • win10系统自带浏览器在哪里
  • win7c盘突然满了怎么回事
  • Android游戏开发案例教程小小弹球
  • bat脚本延迟执行命令
  • django的工作原理
  • Nodejs+angularjs结合multiparty实现多图片上传的示例代码
  • android activity回调函数
  • 如何分析源码
  • python文字检测
  • 等待窗口
  • javascript面向对象编程指南第三版
  • python dask
  • 安徽国税app
  • ukey证书初始密码
  • 数字证书使用方法
  • 个人所得税是按实发工资还是应发
  • 税控盘如何查询季度统计
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设