news 2026/4/16 18:10:20

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

测试验证浅拷贝:

单层数据结构:

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

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

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

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

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

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

浅拷贝总结:

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

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

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

测试验证深拷贝:

单层数据结构:

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

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

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

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

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

深拷贝总结:

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

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

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

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:06:35

《把脉行业与技术趋势》-81-《全球科技通史》- 既然能量是守恒的,既然世界的本质是熵增,而是人类生产创造活动是熵减,是需要消耗额外的能量,那么这个熵减活动的能量是哪里来的?

这是一个极富深度、横跨物理学(热力学)、生态学、经济学与哲学的本源性问题。我们来一层层清晰拆解,避免常见误解,给出既科学严谨又具现实解释力的回答: ✅ 核心结论(先说答案): 人类…

作者头像 李华
网站建设 2026/4/16 9:07:33

【课程设计/毕业设计】基于springbootJava的智慧话果园数字化管理领航系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/15 16:31:52

亲测好用8个AI论文平台,继续教育学生轻松搞定毕业论文!

亲测好用8个AI论文平台,继续教育学生轻松搞定毕业论文! AI 工具如何成为论文写作的得力助手 在当前继续教育学生面临毕业论文压力日益增大的背景下,AI 工具正逐渐成为学术写作中不可或缺的一部分。尤其是那些能够有效降低 AIGC(…

作者头像 李华
网站建设 2026/4/16 9:07:03

JX085_Z30130X31型钻床控制系统的PLC改造

第二章 机床的主要参数 1.机床的主要参数 (1)最大钻孔直径 100mm (2)主轴中心线至立柱母线距离:最大 3150mm 最小 570mm (3&…

作者头像 李华
网站建设 2026/4/16 9:09:44

【Hot100|13-LeetCode76最小覆盖子串】

一、问题理解问题描述给定两个字符串 s 和 t,返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""。注意:对于 t 中重复字符,子串中该字符数量必须不少于 t 中该字符数量。如…

作者头像 李华
网站建设 2026/4/15 14:42:40

python088酒店宾馆客房管理系统设计与实现vue3

目录 技术栈组成系统核心模块关键技术实现典型功能代码示例系统特色 开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 以下是关于Python酒店宾馆客房管理系统设计与实现(Vue3前端…

作者头像 李华