面试官:深拷贝与浅拷贝有啥区别?
发布人:shili8
发布时间:2023-12-06 09:34
阅读次数:44
面试官:深拷贝与浅拷贝有啥区别?
面试官:你知道深拷贝和浅拷贝有什么区别吗?
面试者:当然知道了。深拷贝和浅拷贝都是在复制对象时使用的概念。浅拷贝只是复制了对象的引用,而深拷贝则是复制了对象的所有内容。
面试官:能给我举个例子吗?
面试者:当然可以。我们来看一下下面这段代码:
import copy # 定义一个列表 original_list = [1 2 [3 4]] # 浅拷贝 shallow_copy = copy.copy(original_list) # 深拷贝 deep_copy = copy.deepcopy(original_list) # 修改原始列表的第一个元素 original_list[0] = 5 # 修改原始列表中的嵌套列表的第一个元素 original_list[2][0] = 6 print(original_list) # 输出:[5 2 [6 4]] print(shallow_copy) # 输出:[1 2 [6 4]] print(deep_copy) # 输出:[1 2 [3 4]]
面试者:在这段代码中,我们首先定义了一个原始列表`original_list`,其中包含了一个嵌套列表。然后我们使用`copy.copy()`进行浅拷贝和`copy.deepcopy()`进行深拷贝。接着我们修改了原始列表的第一个元素和嵌套列表的第一个元素,然后分别输出了原始列表、浅拷贝和深拷贝的内容。
面试官:那么根据你的代码示例,可以看出浅拷贝只是复制了对象的引用,所以当原始列表发生变化时,浅拷贝也会跟着变化。而深拷贝则是复制了对象的所有内容,所以即使原始列表发生变化,深拷贝也不会受到影响。对吧?
面试者:是的,您说的完全正确。深拷贝会复制对象的所有内容,包括嵌套对象,而浅拷贝只是复制了对象的引用,所以当原始对象发生变化时,浅拷贝也会跟着变化。
面试官:非常好,你对深拷贝和浅拷贝的理解很清晰。谢谢你的回答。
面试者:不客气,谢谢您的提问。