自动化测试面试官:浅拷贝和深拷贝有什么区别?

2022-12-20 0 526

那他们那时再上看呵呵那个复试难题:浅复本和深复本有甚么差别?

你在我看来到Python,那个难题会时常被问及(方便快捷认知他们就能间接把它认知成Ctrl+C/Ctrl+V复本copy)总之在标识符里头复本粘贴更为重要是我们看见的,也就是说在标识符的当今世界里头,有许多的小东西。

就好似标识符里头有三个is == 看上去这三个没差别

比如a is b

a==b

自动化测试面试官:浅拷贝和深拷贝有什么区别?

看上去没甚么差别,看上去成正比。但只不过它有非常大的差别。

就好似他们的深复本和浅复本,也是那样的,你引入三个组件(copy)我表述三个a等同于三个条目(1,2,3,4)

接着他们去展开浅复本和深复本。

浅复本

b==copy里头的三个方法,

b=copy.copy(a)#浅复本

那那个是浅复本

深复本

C=copy .deepcopy(a)

他们再来打印呵呵,abc

自动化测试面试官:浅拷贝和深拷贝有什么区别?

打印出来都是一模那样的,没毛病,那个时候我们看不出任何的效果。

那我在前面有说,浅复本深复本他们最明显的差别就是:浅拷贝最基本的,没复本子对象

那甚么叫子对象?

所以说那个数据类型就

a=[1,2,3,4]那个条目里头可不能有条目?比如我就又表述三个a三个b

a=[1,2,3,4,[ a , b ]]

打印呵呵,只不过还是那样的,因为它是三个整体。

那为甚么说浅复本没复本子对象呢,他们接着上看

a.去做三个更改,条目能去添加元素对吧吗,append

那个条目a去添加三个元素,那这是第几个元素?那么索引就是4

我的意思就是a=[1,2,3,4,[ a , b c ]]想要在里头再加三个c这样的元素,他们用标识符

a[4].append( c )

那他们再来运行看下效果

自动化测试面试官:浅拷贝和深拷贝有什么区别?

打印为甚么还是三行都是那样的,难题在哪里,是因为在复本在前就把那个元素添加了,你要在复本之后。我去改呵呵标识符顺序,那个时候效果就出来了,那个就是它之间的差别。

那它之间的id是不是那样的呢,id肯定也是不那样的,一起上看呵呵它之间的id。都是不同的对象了

print(id(a))

print(id(b))

print(id(c))

虽然都是复本过来的,但是它已经不是同三个小东西了,复本过来,打印adc,三个id都不那样了

自动化测试面试官:浅拷贝和深拷贝有什么区别?

所以这就是它之间一些基本的差别,这些标识符我们能在电脑上敲一遍,认知呵呵。

加深印象:

浅复本没复本子对象,也就是说我去浅复本,它虽然是三个固定的对象,子对象是统一的,深度复本就是两者完全独立了

只要记住深复本,你之前是那个样子

自动化测试面试官:浅拷贝和深拷贝有什么区别?

我复本之后,不管你做甚么增删改查,我还是那个样子

自动化测试面试官:浅拷贝和深拷贝有什么区别?

完全独立了。

那么浅复本就还没完全独立,子对象还是之前的子对象,我那个子对象加了三个c元素,打印后能显示它添加的子元素,所以你记住深复本两者之间完全独立

如果标识符接触(敲)的少,看上去好似那个小东西很简单,或者那个概念你读一遍也很简单,但是你需要多去敲一些这样的标识符,深复本浅复本在许多语言里头都有,他们智能化,试验框架里头用得还是比较多的。

1、点赞。防止以后找不到,想看的时候,在自己主页就能找到了,很方便快捷;

2、关注我。让他们成为长期关系,下三个视频会分享更多的硬核干货;

3、本文章学习资源,均能免费分享。

文章首发于微信公号:程序员一凡。这样的好内容,里头还有近百篇。 转载请注明出处,谢谢你的支持!

举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务