首页 > 编程语言 >python中的浅拷贝与深拷贝

python中的浅拷贝与深拷贝

时间:2022-08-28 17:49:28浏览次数:63  
标签:python 数据类型 地址 内容 拷贝 数据

1.python中的数据类型分为两种:

  不可变数据类型:数值number,字符串String,元组tuple

  可变数据类型:字典dic,列表list,集合set

2.定义

  深拷贝:拷贝的程度深,开辟了一块新的内存,将被拷贝的内容全部拷贝过来,放到这块新的内存中

  浅拷贝:拷贝的程度钱,只拷贝原数据的首地址,通过原数据的首地址,去获取内容

两者的优缺点对比:
(1)深拷贝拷贝程度高,将原数据复制到新的内存空间中。改变拷贝后的内容不影响原数据内容。但是深拷贝耗时长,且占用内存空间。
(2)浅拷贝拷贝程度低,只复制原数据的地址。其实是将副本的地址指向原数据地址。修改副本内容,是通过当前地址指向原数据地址,去修改。所以修改副本内容会影响到原数据内容。但是浅拷贝耗时短,占用内存空间少。

浅拷贝注意事项:

  改变原始对象中为可变类型的元素的值,会同时影响拷贝对象。
  改变原始对象中为不可变类型的元素的值,不会响拷贝对象。

深拷贝注意事项:

  深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。
  经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。

代码实例:

 

 

 

 通过代码可以看出,对于浅拷贝,当我们向原数据中的可变数据类型之一的列表追加一个元素,原数据和浅拷贝之后的数据都发生了变化,反而对于不可变数据类型,浅拷贝之后没有发生变化!

标签:python,数据类型,地址,内容,拷贝,数据
From: https://www.cnblogs.com/99kol/p/16633197.html

相关文章

  • 3,python3 windows 安装,及 windows python 环境 requests模块安装
    1,安装python环境1,执行安装包,双击->python-3.10.4-amd64.exe->勾选选自定义安装和勾选添加环境变量  2,勾选安装所有用户和设置安装路径  3,cmd->python,验证Py......
  • Python Selenium使用cookie实现自动登录微博
    @目录前言一、预登陆获取cookie1)cookie处理2)预登陆二、登录测试前言模拟登录微博是实现微博网页爬虫的第一步,现在的微博网页版有个sinavisitsystem,只有登录过后才......
  • [转]Python PEP8 代码规范常见问题及解决方法
    转自:https://blog.csdn.net/qq_36759224/article/details/89304878 Python的PEP8代码规范,将常见的PEP8代码规范问题和解决方法记录一下,学习一下,养成良好......
  • 记录一次网站上传的python代替方法
    网址:https://tool2-mml.sjtu.edu.cn/VRprofile/VRprofile.php这个网站需要上传文件 思路抓包看下网络请求开始看的时候发现没啥然后用wireshark看了下发现文件上传......
  • 6.8 python基础列表元素的添加操作
     #append()list=[10,20,30,40,50,60,70,80]#列表后面添加元素,可以施单个元素或列表整体list.append(20)#后面添加单个元素print(list)list.append([30,90])#后面......
  • python读取csv文件
    参考此贴:csv格式文件之csv.DictReader()方法_booze-J的博客-CSDN博客_csv.dictreader官方帮助:csv—CSVFileReadingandWriting—Python3.10.6documentationcsv......
  • Python random 的使用
    导入importrandom 随机数生成//用来生成[a,b]之间的随意整数,包括两个边界值。print(random.randint(0,9))//用来随机生成一个0到1之间的浮点数,包括零。0.15790......
  • Python 报错:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char
    报错内容:json.decoder.JSONDecodeError:Expectingvalue:line1column1(char0) 报错代码:print(res.json()) 报错原因:打印请求返回值报错该接口返回值......
  • python before_request详解
    before_request顾名思义,就是在request请求之前做的事情。它会在每一个请求来的时候,都会先去请求before_request注册的函数。before_request需要注册一个函数,可以不需要参......
  • python after_request详解
    after_request是在每一个请求结束之后,再请求的一个钩子函数。它需要有一个参数接收请求的响应。这个示例是使用after_request,对每一个请求后的响应进行分类,从而在请求完成......