当前位置:  首页>> 技术小册>> Python面试指南

答案:

Python中的深拷贝和浅拷贝是用来复制对象的方法,它们有以下的区别:

浅拷贝:创建一个新对象,其中包含原始对象的引用,而不是对象本身的副本。如果原始对象是不可变的,则浅拷贝将创建一个新对象,该对象与原始对象相同。但如果原始对象是可变的,则浅拷贝将创建一个新对象,该对象与原始对象共享内部对象的引用。浅拷贝可以通过 copy() 方法来实现。
深拷贝:创建一个新对象,其中包含原始对象及其内部对象的副本。即使原始对象包含其他对象的引用,深拷贝也会递归地复制这些对象。深拷贝可以通过 copy.deepcopy() 方法来实现。
以下是一个浅拷贝和深拷贝的示例代码:

  1. import copy
  2. # 浅拷贝示例
  3. original = [1, 2, [3, 4]]
  4. shallow_copy = copy.copy(original)
  5. # 修改浅拷贝后的对象
  6. shallow_copy[0] = 5
  7. shallow_copy[2][0] = 6
  8. # 原始对象不会受到影响
  9. print(original) # 输出 [1, 2, [6, 4]]
  10. print(shallow_copy) # 输出 [5, 2, [6, 4]]
  11. # 深拷贝示例
  12. original = [1, 2, [3, 4]]
  13. deep_copy = copy.deepcopy(original)
  14. # 修改深拷贝后的对象
  15. deep_copy[0] = 5
  16. deep_copy[2][0] = 6
  17. # 原始对象不会受到影响
  18. print(original) # 输出 [1, 2, [3, 4]]
  19. print(deep_copy) # 输出 [5, 2, [6, 4]]

在上面的示例中,我们使用 copy.copy() 方法进行浅拷贝,并使用 copy.deepcopy() 方法进行深拷贝。我们修改浅拷贝和深拷贝后的对象,并检查原始对象是否受到影响。注意到,修改浅拷贝后的对象会同时修改原始对象,而修改深拷贝后的对象不会影响原始对象。


该分类下的相关小册推荐: