Python深拷贝与浅拷贝_python 赋值

Python深拷贝与浅拷贝_python 赋值深拷贝和浅拷贝不管对于浅拷贝、还是深拷贝,针对不可变对象str、int、tuple(有点特殊)、boolean,它的内存地址是不变的,拷贝的仅仅是值importcopya=1b=co

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

深拷贝和浅拷贝

不管对于浅拷贝、还是深拷贝,针对不可变对象str、int、tuple(有点特殊)、boolean,它的内存地址是不变的,拷贝的仅仅是值

import copy


a = 1
b = copy.copy(a)  # 浅拷贝a
c = copy.deepcopy(a)  # 深拷贝a
print(a is b)
print(a is c)

>>> True
>>> True

is比较的是二者的内存地址是否相同

 

浅拷贝

浅拷贝只拷贝可变对象的第一层,如果可变对象中还有可变的对象,那么第二层拷贝不到,拷贝不到就是说,第二层的内存地址是共用的,都是指向同一片内存地址

import copy


a = [1, 2, [3, 4]]
b = copy.copy(a)
print(a is b)
print(a[2] is b[2])

>>> a的内存地址 140369750660592
>>> b的内存地址 140369750677376
>>> False
>>> a[2]的内存地址 140369750677056
>>> b[2]的内存地址 140369750677056
>>> True

浅拷贝只拷贝第一层,所以b拷贝出来的内存地址是与a不同的,
但因为浅拷贝只能拷贝第一层,所以b[2]这个列表拷贝不到,指向的内存地址仍然是a[2]的内存地址

 

深拷贝

深拷贝对于可变的对象,全部拷贝下来,全部都开辟一片新的内存地址

import copy


a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
print('a的内存地址', id(a))
print('b的内存地址', id(b))
print(a is b)
print('a[2]的内存地址', id(a[2]))
print('b[2]的内存地址', id(b[2]))
print(a[2] is b[2])

>>> a的内存地址 140312626337184
>>> b的内存地址 140312626353968
>>> False
>>> a[2]的内存地址 140312626353648
>>> b[2]的内存地址 140312626337264
>>> False
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165841.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月31日 上午11:00
下一篇 2022年7月31日 上午11:00


相关推荐

  • Python 生成随机数_python建立随机数列表

    Python 生成随机数_python建立随机数列表记录了生成随机数的几种方式以及生成随机列表的几种方法。

    2022年10月5日
    6
  • 国内能用的国际邮箱推荐哪个?公司邮箱号码大全「建议收藏」

    国内能用的国际邮箱推荐哪个?公司邮箱号码大全「建议收藏」在网上看到大家一直在讨论国际邮箱哪个好用,TOM、163、gmail等,在国内用哪个邮箱呢?外贸公司需要跟客户沟通合同信息、物流货代公司需实时沟通货柜清关进展、电商公司采购出口需跟国外办事处或客户沟通、软件信息公司老板是老外,也必须用国际邮箱,这些使用邮箱的人90%都会在国内用邮箱,所以在国内能的国际邮箱是刚需。国内能用的国际邮箱推荐常用个人邮箱,但进了公司用企业邮箱才发现真的不一样。TOM企业邮箱是我在大学里看到老师用过的,现在公司分配了一个给我,之前的个人邮箱Facebook验证码都收不到,公司的这

    2026年2月26日
    4
  • Linux 查看磁盘大小

    Linux 查看磁盘大小新买回来的戴尔塔式服务器 查看磁盘大小命令 fdisk l 不用 df h 命令的原因是有写磁盘没有挂载的话不会显示比如 我用 df h 查出来是 2T 其实硬盘是 4T 用 fdisk l 就可以查询出来 OK

    2025年8月3日
    4
  • 关于Linux环境下安装配置vsftpd服务全攻略(踩坑)

    关于Linux环境下安装配置vsftpd服务全攻略(踩坑)前言本篇文章就记录一下我在 Linux 安装配置的 vsftpd 服务的过程 踩过的坑以及 ftp 相关的内容 FTP 传输模式文件传输协议 FileTransfer FTP 基于该协议 FTP 客户端与服务端可以实现共享文件 上传文件 下载文件 FTP 基于 C S 模式 FTP 客户端与服务器端有两种传输模式 分别是 FTP 主动模式 FTP 被动模式 主被动模式均是以 FTP 服务器端为参照 FTP 主

    2026年3月16日
    2
  • 均方误差(mean-square error, MSE)「建议收藏」

    均方误差(mean-square error, MSE)「建议收藏」全参考图像质量评价的方法有:PSNR峰值信噪比;SSIM结构相似性;MSE均方误差;我们接下来介绍一下均方误差。SSE在统计学里,该参数计算的是拟合数据与原始数据对应点的误差的平方和,计算公式为:其中是真实数据,是拟合数据,>0,从这里可以看出SSE越接近于0,说明模型选择和拟合更好。MSE(均方方差)该统计参数是预测数据和原始数据对应点误差的平方和的均值…

    2026年4月14日
    5
  • 500 万 GLM 4.7 token免费送,智谱 GLM Coding 搭配 OpenCode 完美搭档

    500 万 GLM 4.7 token免费送,智谱 GLM Coding 搭配 OpenCode 完美搭档

    2026年3月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号