您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页5分钟带你全面搞懂面试必问系列之Python深浅拷贝

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

来源:五一七教育网

📝 面试求职:内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:


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

关于深浅拷贝

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

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

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

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

Python深拷贝语法:

copy.deepcopy(x)

Python浅拷贝语法:

copy.copy(x)

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

Python Tutor - Python Online Compiler with Visual AI Help

测试验证浅拷贝:

单层数据结构:

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

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

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

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

浅拷贝总结:

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

测试验证深拷贝:

单层数据结构:

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

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

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

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

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

深拷贝总结:

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


最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务