软件测试|Python的深拷贝和浅拷贝是什么?

在这里插入图片描述

简介

深拷贝和浅拷贝是Python中常用的概念,用于复制对象,但它们在复制对象时的方式和用途有所不同。在本文中,我们将详细讨论深拷贝和浅拷贝的概念,以及如何在Python中使用它们。

什么是深拷贝和浅拷贝?

  • 浅拷贝

浅拷贝是指创建一个新对象,该对象是原始对象的副本。然而,如果原始对象包含其他对象(例如列表或字典),浅拷贝将只复制这些对象的引用,而不是递归地复制它们的内容。这意味着浅拷贝后的对象与原始对象之间共享一些内部对象。

  • 深拷贝

深拷贝是创建一个新对象,该对象是原始对象及其所有嵌套对象的完全独立副本。这意味着深拷贝后的对象是原始对象的递归复制,没有共享引用。深拷贝通常用于需要完全独立的副本,以防止在一个对象上的更改影响到另一个对象。

如何进行浅拷贝

在Python中,可以使用标准库模块 copy 中的 copy 函数来执行浅拷贝。下面是一个示例:

import copy

original_list = [1, 2, [3, 4]]
shallow_copy = copy.copy(original_list)

shallow_copy[2].append(5)

print("Original List:", original_list)
print("Shallow Copy:", shallow_copy)

-----------
# 输出结果如下:
Original List: [1, 2, [3, 4, 5]]
Shallow Copy: [1, 2, [3, 4, 5]]

可以看到,浅拷贝后的 shallow_copy 对象与原始列表 original_list 共享内部列表的引用,因此在 shallow_copy 中对内部列表的更改也反映在原始列表中。

如何进行深拷贝

为了执行深拷贝,我们可以使用 copy 模块中的 deepcopy 函数。这将创建一个完全独立的副本,包括嵌套对象。以下是一个深拷贝的示例:

import copy

original_list = [1, 2, [3, 4]]
deep_copy = copy.deepcopy(original_list)

deep_copy[2].append(5)

print("Original List:", original_list)
print("Deep Copy:", deep_copy)

-----------
输出结果如下:
Original List: [1, 2, [3, 4]]
Deep Copy: [1, 2, [3, 4, 5]]

在这个例子中,深拷贝创建了一个与原始对象完全独立的副本,因此对 deep_copy 中的更改不会影响原始对象。

总结

浅拷贝和深拷贝是Python中复制对象的两种不同方式。浅拷贝创建一个新对象,但共享嵌套对象的引用,而深拷贝创建一个完全独立的副本,包括嵌套对象。根据我们的不同需求,我们可以选择使用其中一种方式来复制对象。深拷贝通常用于确保对象的完全独立性,而浅拷贝通常用于创建共享数据的副本。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值