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

5分钟带你全面搞懂面试必问系列之Python深浅拷贝

在自动化测试/测试开发岗位面试时,浅拷贝和深拷贝经常涉及到,目的是评估候选人对 Python 数据结构处理和内存管理的理解,本文通过详细的测试验证帮你全面理解深浅拷贝及它们的区别

关于深浅拷贝

在 Python 中,用等号 = 给变量赋值时,并不会真正复制对象,而只是让新的变量指向原来的对象。也就是说,新变量和原来的变量其实是共享同一个对象。如果想要创建一个“真正的副本”,让新对象和原对象互相独立,我们可以使用 Python 的 copy 模块来实现。copy 模块中提供了两种方式:深拷贝及浅拷贝:

深拷贝和浅拷贝的概念用于描述对象的复制方式,它们的主要区别在于是否递归复制对象中的嵌套对象。

浅拷贝:创建一个新对象,只复制原对象的第一层引用,嵌套对象仍然与原对象共享引用。

深拷贝:创建一个完全独立的新对象,递归复制原对象及其嵌套对象的所有内容。

Python深拷贝语法:

copy.deepcopy(x)

Python浅拷贝语法:

copy.copy(x)

为了更加直观了解深拷贝和浅拷贝的区别,这里我们可以通过代码可视化网站python tutor清楚的看到代码执行的每一步发生了什么、变量的作用域和其对应关系都一目了然:

Python Tutor - Python Online Compiler with Visual AI Help

测试验证浅拷贝:

单层数据结构:

对于可变类型如列表、字典、集合,浅拷贝会开辟新的空间地址,进行浅拷贝

对于不可变类型如数字、字符串、元组,浅拷贝仅仅是地址指向,不会开辟新空间拷贝值

外层对象是可变的,内层对象是不可变的:

外层对象是不可变的,内层对象是可变的:

外层对象是可变的,内层对象是可变的:

外层对象是不可变的,内层对象是不可变的:

浅拷贝总结:

浅拷贝是对一个对象父级(外层)的拷贝,并不会拷贝子级(内部)。使用浅拷贝的时候,分为两种情况:

第一种,如果最外层的数据类型是可变的,如列表、字典、集合,浅拷贝会开启新的地址空间去存放。

第二种,如果最外层的数据类型是不可变的,如数字、字符串、元组,浅拷贝对象的时候,还是引用原对象的地址空间。

测试验证深拷贝:

单层数据结构:

这里的表现和浅拷贝是一样的

对于外层对象是可变的,内层对象是不可变的:

对于外层对象是不可变的,内层对象是可变的:

外层对象是可变的,内层对象是可变的:

外层对象是不可变的,内层对象是不可变的:

深拷贝总结:

深拷贝对一个对象是所有层次的拷贝(递归),内部和外部都会被拷贝过来。深拷贝也分两种情况:

第一种,最外层数据类型可变。外层的会新开辟地址空间存放。如果里面是可变数据类型,内部会新开辟地址空间存放。如果内部数据类型不可变,内部则是对地址的引用。

第二种,外层数据类型不可变,如果内部数据是可变数据类型,外部和内部都会新开辟地址空间存放。如果内部数据类型不可变,外部和内部都是对地址的引用。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

http://www.jsqmd.com/news/294055/

相关文章:

  • 今天面试招了个18K的人,从腾讯出来的果然都有两把刷子···
  • 在外包干了三年,我废了……不吹不黑!
  • 前段时间公司招人,面了一个要20K的,一问自动化只会点皮毛···
  • 关于使用虚幻vr开发中位置对不上的问题
  • 2026年网络安全自学入门:(超详细)从入门到精通学习路线规划,学完即可就业!
  • 2026广州化妆品OEM/ODM工厂推荐:颜朵科技领衔,实力厂商助力品牌高效孵化
  • 2026广州护肤品加工企业排名解析:颜朵科技凭合规与创新领跑行业
  • 油性头屑救星!2026最新测评洗发水排行榜TOP1,去屑控油公认见效快
  • 南昌有名的墙面装修专业公司靠谱吗,有哪些权威认证?
  • 2026哈尔滨雅思培训补习班权威测评榜单
  • 分析膨胀罐来图定制,柏甲控制工艺精湛,品质可靠
  • 重庆锦胜雾森方案平台费用多少,详细价格大揭秘
  • 2026主流招聘软件平台排行榜 综合测评
  • Flutter × OpenHarmony 跨端实践:打造个人理财助手的预算管理模块
  • 天硕(TOPSSD)加固计算机中的策略:如何保障宽温下的数据一致性与长期稳定?
  • Flutter × OpenHarmony 跨端开发:构建个人理财助手的统计信息模块
  • 覆盖20+场景!众多系统加持!itc全面助力北京师范大学宁德实验学校多个特色空间“智慧升级”!
  • 音视频系统第一厂家itc保伦股份荣获“2025中国互联网经济年度品牌奖”
  • 2026年内蒙古吉林白/路边石/地铺石/火烧板石材厂源头厂家选型指南
  • 图的最短路专题
  • Java毕设项目推荐-基于java+springboot的体育用品购物商城系统基于springboot的运动用品商城系统【附源码+文档,调试定制服务】
  • Java毕设项目推荐-基于springboot+vue的智慧化果园智能管理生长系统【附源码+文档,调试定制服务】
  • Java毕设选题推荐:基于springboot的智慧农作物果园农产品蔬菜种植管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 计算机Java毕设实战-基于springboot+vue的智能果园数字化管理领航系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 如何基于 MLIR 实现自动调优 (GPU Ascend NPU)
  • 2026年郑州靠谱的蛋糕培训学校,新东方培训学校!
  • Java毕设项目:基于springboot的元宇宙平台的整车生产线管理系统(源码+文档,讲解、调试运行,定制等)
  • 山东一卡通回收指南:闲置卡券这样处理最划算
  • 浙江恒温恒湿车间施工优选,2026年靠谱单位推荐,洁净车间/洁净厂房/净化工程/净化车间,恒温恒湿车间实力厂家有哪些
  • 保姆级教程:本地微调Gemma 3 270M模型,从零开始训练你的AI棋手(建议收藏)