文章目录

  • 1.前言
  • 2.变量的地址(id)
  • 3.浅拷贝(copy.copy)
  • 4.深拷贝(copy.deepcopy)

1.前言

Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。

2.变量的地址(id)

什么是id?一个对象的id值在CPython解释器里就代表它在内存中的`地址

import copya = [11,22,33,44]
b = aprint(id(a))
print(id(b))
print(id(a) == id(b))b[1] = 8888
print(a,b)#输出
4558214960
4558214960
True
[11, 8888, 33, 44] [11, 8888, 33, 44]

3.浅拷贝(copy.copy)

当使用浅拷贝时,python只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。看代码:

import copya = [11,22,33,44]
c = copy.copy(a)print(id(a))
print(id(c))
print(id(a) == id(c))print('\n')
c[1] = 8888
print(a)
print(c)
print(id(a))
print(id(c))
print(id(a) == id(c))#输出
4559192784
4559193024
False[11, 22, 33, 44]
[11, 8888, 33, 44]
4559192784
4559193024
False

4.深拷贝(copy.deepcopy)

deepcopy对外围和内部元素都进行了拷贝对象本身,而不是对象的引用。

import copya = [[11,22],[33,44]]
d = copy.copy(a)print(id(a))
print(id(d))
print(id(a) == id(d))a[1][1] = 8888
print(a)
print(d)print('\n')
e = copy.deepcopy(a)     #因为时深拷贝,这时e中内部元素的值不会因为a中的值改变而改变
a[1][0] = 9999
print(a)
print(e)
print(id(a))
print(id(e))
print(id(a) == id(e))#输出
4559792160
4559791920
False
[[11, 22], [33, 8888]]
[[11, 22], [33, 8888]][[11, 22], [9999, 8888]]
[[11, 22], [33, 8888]]
4559792160
4556920224
False

Python基础——深拷贝、浅拷贝相关推荐

  1. Java基础 深拷贝浅拷贝

    Java基础 深拷贝浅拷贝 非基本数据类型 需要new新空间 class Student implements Cloneable{private int id;private String name ...

  2. Python基础 if判断语句 篇

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文 系列文章目录 Python 零基础到入门数据类型篇         Python基础 字符串常用方法篇          Python基 ...

  3. Python基础:对象的深拷贝和浅拷贝的区别

    Python基础:对象的深拷贝和浅拷贝的区别 1 变量与对象 2 不可变对象与可变对象 3 直接赋值 4 浅拷贝 5 深拷贝 参考文献 1 变量与对象 对象:内存中存储数据的实体,有明确的类型.在Py ...

  4. python篇 深拷贝与浅拷贝

    本章目录 1.拷贝概念 1.2 相关知识点 2.浅拷贝概念 3.浅拷贝演示 4.深拷贝概念 5.深拷贝演示 1.拷贝概念 如果各位捧场的读者老爷对python中''is''和''==''运算符的概念如 ...

  5. python怎么避免浅拷贝_详谈Python中的深拷贝和浅拷贝

    在平时工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用.为了生成这个副本,就产生了拷贝. ...

  6. python怎么避免浅拷贝_深度解读Python深拷贝与浅拷贝问题

    Illustrations by Leon Tukker ♚ 作者:PayneLi,Python全家桶,主要讲述数据挖掘.机器学习和深度学习领域的前沿技术,同时还会推荐一些行业最新论文.技术专家的经验 ...

  7. Python中深拷贝与浅拷贝的区别?

    往期面试题: 列举Python中的标准异常类? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 说说Python模块主要分哪三类? 废话不多说,开始今天的题目: 问:说说Pyt ...

  8. Python copy模块浅拷贝和深拷贝

    Python copy模块浅拷贝和深拷贝 在开发中,经常涉及到数据的传递,在数据传递使用的过程中,可能会对数据进行修改. 对数据进行处理后,如果在后面的代码中,即需要使用修改之前的数据,也需要使用修改 ...

  9. 【从零学Python】深拷贝和浅拷贝、二维数组初始化

    Python 的深拷贝和浅拷贝 直接赋值: 其实就是对象的引用(别名). 浅拷贝(copy): 拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcop ...

最新文章

  1. linux终端出现bash: setup.bash: No such file or directory,和.bashrc文件的问题
  2. Java 获得方法调用者名称
  3. 使用栈Stack实现队列Queue
  4. 构建强化学习_如何构建强化学习项目(第1部分)
  5. P7516-[省选联考2021A/B卷]图函数【bfs】
  6. Flume-概述-安装
  7. terrasolid时间设置
  8. 时间一天天过去,好像什么都没变。
  9. SXLib3D -- 一款高效的点云和网格交互处理平台
  10. Metricbeat监控Docker进程
  11. SpringBoot 项目(若依脚手架)2
  12. D. Three Religions
  13. Excel实现数据项校验的功能---VBA的编写以及数据有效性的设置
  14. 学习篇-Activiti-29-流程定义存储表
  15. 3dmax安装后破解Couldn't write to disk !
  16. 2016版excel_用Excel处理身份证信息的技巧,看这篇就够了,建议收藏
  17. aws部署web_运营酿酒厂解释了Amazon Web Services(AWS)
  18. 企业选择私有化部署的IM即时通讯软件,全力保护信息安全
  19. 《最强大脑》第七季,比起选手,华师女神教授更让人心动
  20. 50N06S-ASEMI低压N沟道MOS管50N06S

热门文章

  1. html脚本类型,HTML脚本标记:类型或语言(或省略两者)?
  2. Robot Freamwork 安装配置文档
  3. java中反复使用代码_Java代码复用规则
  4. SQL基础--gt; 约束(CONSTRAINT)
  5. C++使用boost::bind 订阅消息中的返回函数传入多个参数
  6. pytorch 入门学习使用逻辑斯蒂做二分类-6
  7. oracle导入到sqlserver2005
  8. 路由协议之间的经典对比
  9. linux C 多进程架构,linux c 多进程多线程比较
  10. Sony MZ-RH1 Hi-MD