美文网首页
自动化测试面试官:浅拷贝和深拷贝有什么区别?

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

作者: 程序员阿沐 | 来源:发表于2021-03-20 14:22 被阅读0次

那我们今天再来看一下这个面试问题:浅拷贝和深拷贝有什么区别?

你如果说到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、本文章学习资源,均可以免费分享。

微信公号:程序员一凡。这样的好内容,里面还有近百篇。  谢谢你的支持!

相关文章

  • iOS笔试题整理(二)

    1、神拷贝和浅拷贝有什么区别? 浅拷贝:指针(地址)拷贝,不会产生新对象 深拷贝:内容拷贝,会产生新对象 ...

  • iOS深拷贝(MutableCopy)与浅拷贝(Copy)的区别

    深拷贝和浅拷贝的概念 iOS中有深拷贝和浅拷贝的概念,那么何为深拷贝何为浅拷贝呢?浅拷贝:浅拷贝并不拷贝对象本身,...

  • copy和mutableCopy的区别

    copy和mutableCopy的区别 深拷贝和浅拷贝的区别 在OC中对象的拷贝方式有两种:深拷贝和浅拷贝.浅拷贝...

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

    那我们今天再来看一下这个面试问题:浅拷贝和深拷贝有什么区别? 你如果说到Python,这个问题会经常被问到(方便理...

  • iOS开发 图文并茂理解深拷贝与浅拷贝

    深拷贝和浅拷贝(Shallow copy 和 Deep copy) 一.概念定义 对象复制有两种:浅拷贝和深拷贝。...

  • iOS面试题-第二页

    11.深拷贝和浅拷贝的理解. 深拷贝;拷贝的内容. 浅拷贝:拷贝的指针. 深拷贝如: NSMutableDicti...

  • iOS - copy 与 mutableCopy

    一说到拷贝,就不得不提浅拷贝和深拷贝。 何谓浅拷贝?何谓深拷贝? 往简单的说: 浅拷贝:拷贝地址。 深拷贝:拷贝内...

  • JS中的深拷贝与浅拷贝

    知乎:js中的深拷贝和浅拷贝? 掘金: js 深拷贝 vs 浅拷贝 前言 首先深拷贝与浅拷贝只针对 Object,...

  • iOS--拷贝相关题

    1、什么是深拷贝什么是浅拷贝?浅拷贝和深拷贝的区别 * 浅拷贝(shallow copy):指针拷贝,对于被拷贝对...

  • 2018-10-10函数基础

    深拷贝和浅拷贝 深拷贝 copy.deepcopy(对象)浅拷贝 copy.copy(对象)深拷贝: 将对象对应的...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/vuhwcltx.html