当前位置: 首页 > news >正文

ppt模板免费下载哪个网站好程序编程软件有哪些

ppt模板免费下载哪个网站好,程序编程软件有哪些,优秀排版设计图片,毕业设计做网站怎样做特别一点背景 想必大家面试或者平时学习经常遇到问python的深拷贝、浅拷贝和赋值之间的区别了吧#xff1f;看网上的文章很多写的比较抽象#xff0c;小白接收的难度有点大#xff0c;于是乎也想自己整个文章出来供参考 可变与不可变 讲深拷贝和浅拷贝之前想讲讲什么是可变数据类型…背景 想必大家面试或者平时学习经常遇到问python的深拷贝、浅拷贝和赋值之间的区别了吧看网上的文章很多写的比较抽象小白接收的难度有点大于是乎也想自己整个文章出来供参考 可变与不可变 讲深拷贝和浅拷贝之前想讲讲什么是可变数据类型和不可变数据类型 这里有点绕大概就是 可变指的是值变化后变量的id地址没变同一块地址值是可以变得不可变指的是值变化后变量的id地址也变了同一块地址只能有一个值 可变的数据类型有列表list、字典dict、集合set 不可变数据类型有整型int、浮点数float、字符串string、元组tuple、布尔bool 什么是不可变数据类型 不可变具体怎么体现呢以整形为例 python中所有的整形都已经有自己的地址了我们将整形赋值给变量的过程其实是变量的地址指向整形的地址 print(id(1)) # 140721648427816 a 1 # a的id地址和1是一样的 print(id(a)) # 140721648427816 print(id(999999999999999999)) # 2210500291920 b 999999999999999999 print(id(b)) # 2210500291920 c 1 # c也指向了1的地址所以a和c的地址是一样的 print(id(a)id(c)) # True 同样的如果将a的值修改为2那么a的地址就会指向2的id地址。 print(id(1)) # 140721648427816 a 1 # a的id地址和1是一样的 print(id(a)) # 140721648427816 a 2 print(id(a)) # 140721573258056 所以其实可变和不可变是对于id来说的一个id地址只能指向一个值的数据类型就是不可变数据类型换句话就是值变了地址也变了 什么是可变数据类型 直接上代码 l1 [1,2,3] print(id(l1)) # 2259540475456 # 修改变量的值 l1.append(4) print(id(l1)) # 2259540475456 # 重新给列表赋值 l1 [3,4,5] print(id(l1)) # 2259540541952 # 给其他列表赋同样的值 l2 [3,4,5] print(id(l2)) # 2259540475456 可以看到我们修改了列表的值但是变量的id地址没有发生变化。像这种可以修改值但是地址 没变也就是id地址指向的值可以变化的就叫做可变数据类型 但是我们可以发现如果是重新给列表赋值列表的地址是会发生变化的这里需要注意赋值和修改是不一样的同样的我们也可以看到给别的列表赋同样的值他们的id地址也是不一样的。 这是因为我们赋值的是一个列表那么python在赋值之前呢就会创建一个列表对象python一切皆对象那么创建列表对象的时候python就会给这个列表对象分配一个id然后我们给l2进行赋值的时候也创建了新的列表对象那么他就会有新的id # 代码1 print(id([1,2,3])) # 2048797408832 print(id([1,2,3])) # 2048797408832 print(id([1,2,3])) # 2048797408832 l1 [1,2,3] l2 [1,2,3] print(id(l1)) # 2048797408832 print(id(l2)) # 2048797475328# 代码2 a [1] print(id(a)) # 执行三次每次id都不一样 再来看看上面的代码代码1连续打印三个[1,2,3]他们的id是相同的因为创建了[1,2,3]这个临时列表对象且该对象还没有被回收。[1,2,3]赋值给l1后居然id和[1,2,3]是一样的是因为[1,2,3]有值但没有变量名临时在l1赋值[1,2,3]的时候就直接把id给了第一次出现的l1而l2则是生成了一个新的列表对象所以id和l1的不一样。 浅拷贝、深拷贝和赋值的区别 看到这里相信你已经知道什么是可变数据类型和不可变数据类型了我们的浅拷贝和深拷贝之间的区别其实只有在可变数据类型才有区别的或者说是对于可变数据类型才有的深拷贝 不可变数据类型下的浅拷贝、深拷贝和赋值 我们先来看看不可变数据类型的浅拷贝、深拷贝和赋值的区别 import copya hello # a赋值给b b a # c是a的浅拷贝 c copy.copy(a) # d是a的深拷贝 d copy.deepcopy(a) print(a的id, id(a)) print(b的id, id(b)) print(c的id, id(c)) print(d的id, id(d)) 结果我们发现他们的id都是一样的这是因为 创建了一个临时字符串对象“hello”时分配了地址然后声明变量a时a指向了这个地址然后赋值给b时其实就是b也指向了a指向的地址然后浅拷贝和深拷贝其实是返回了a这个变量 我们可以看看copy的源码如果不想看分析可以直接点目录看可变数据类型就知其区别 copy的源码维护了一个_copy_dispatch的字典第一个框是处理不可变数据类型的如果是不可变数据类型的话会给这个字典赋值一个函数变量比如 _copy_dispatch[class int]_copy_immutable 假如是我们刚刚传的字符串那么代码是这样执行的 可变数据类型下的浅拷贝、深拷贝和赋值【看这里快速弄懂】 我们再来看看可变数据类型 import copy a [1,2,3] b a c copy.copy(a) d copy.deepcopy(a) print(a的id, id(a)) # a的id 2880639630592 print(b的id, id(b)) # b的id 2880639630592 print(c的id, id(c)) # c的id 2880639446144 print(d的id, id(d)) # d的id 2880639446272 这里我们可以看到a的b的id是一样的这里不再赘述c和d都是新的id好了这里我们可以看到和不可变数据类型的区别了但是还看不出来浅拷贝和深拷贝的区别我们继续往下看 如果是这种嵌套列表的其他数据类型也可以只要是可变的就行 浅拷贝时申请了一片新的地址然后复制了a列表的第一层的值后面其实还是指向了a嵌套列表的地址 这个时候我们发现如果你去修改c的嵌套列表是会影响a的值的 import copy a [1,2,3,[4,5,6]] c copy.copy(a) print(a) # [1, 2, 3, [4, 5, 6]] print(c) # [1, 2, 3, [4, 5, 6]] # 修改c的第一个元素和嵌套列表的第一个元素 c[0] 0 c[3][0] 7 print(a) # a中嵌套列表的值也变了 # [1, 2, 3, [7, 5, 6]] print(c) # [0, 2, 3, [7, 5, 6]] 有时候一些软件bug就是这样来的找半天也想到是吧 但是浅拷贝就不一样了他完全是自己的id地址不会影响a了 import copy a [1,2,3,[4,5,6]] d copy.deepcopy(a) print(a) # [1, 2, 3, [4, 5, 6]] print(d) # [1, 2, 3, [4, 5, 6]] # 修改d的第一个元素和嵌套列表的第一个元素 d[0] 0 d[3][0] 7 print(a) # a中嵌套列表的值没变 # [1, 2, 3, [4, 5, 6]] print(d) 结语 到这里差不多就讲完了相信你已经十分了解浅拷贝、深拷贝和赋值之间的关系和区别了吧如果你觉得文章对你有用能不能帮忙点点赞收藏起来以防复习找不到呢 代码调试地址实时内存分配图形显示Python Tutor code visualizer: Visualize code in Python, JavaScript, C, C, and Java
http://www.pierceye.com/news/730564/

相关文章:

  • 建设内部网站目的国内贸易在那个网站上做
  • 用什么建设网站注册深圳公司代理
  • 网站平台建设方案书百度云资源搜索入口
  • 网站 团队博罗网站建设哪家便宜
  • wordpress列表分页枣庄seo外包
  • 知了网站后台推广形式有哪几种
  • 成品图片的网站在哪里找wordpress开启防盗链
  • 伊滨区网站建设网站建设经理
  • 权威的郑州网站建设域名租用平台
  • 造价工程师网网站点击排名优化
  • 网站关键词搜索海口网站建设优化公司
  • WordPress建影视站免费的素材网站有哪些
  • 屯留做网站哪里好阿里云服务器618
  • 网站怎么做登录模块免费的编程软件下载
  • 网站建设与管理的策划书网站建设五合一
  • 网站建设管理分工公司招聘网站有哪些
  • 分类信息网站手机版上海网站关键词优化方法
  • 建设个人网站的参考网站及文献怎么做水果网站
  • 台山住房和城乡建设 网站有赞分销
  • 网站备案 历史wordpress货币插件
  • 如何做自助搜券网站佛山顺德专业做网站
  • 义乌网站制作多少钱工会网站建设
  • 六安高端网站建设公司开网店的流程步骤
  • 网站被墙301怎么做展馆展厅设计效果图
  • 唐山市城市建设规划局网站大兴做网站公司
  • 陕西做网站的公司地址克拉玛依市住房和建设局网站
  • 做电影网站 广告收入怎么知道网站被k
  • 开发企业网站费用深圳宝安seo
  • 算命公司网站建设制作开发方案教育培训机构招生网站建设
  • 织梦做网站被告全椒网站建设