python中对象的直接赋值、浅复制和深复制

在 Python 中,直接赋值、浅复制和深复制是处理对象和数据结构(如列表、字典等)时的三种基本方式。理解它们的区别对于避免数据篡改和保持数据完整性非常重要。
注意这里说的这几种操作只针对对象和数据结构,而非比如单个数值的非对象数据。
以下是它们的详细讲解:

1. 直接赋值(Direct Assignment)

机制

  • 引用相同对象:直接赋值不会创建新对象,而是让新变量指向原始对象的内存地址。两个变量实际引用了同一个对象。
  • 内存共享:修改任意一个变量会影响到另一个变量,因为它们共享相同的内存位置。

示例

x = [1, 2, 3]
y = x  # 直接赋值
y[0] = 100

print(x)  # 输出 [100, 2, 3]
print(y)  # 输出 [100, 2, 3]

在这个例子中,xy 指向相同的列表对象,因此修改 y 也会修改 x

应用场景

  • 适用于需要两个变量同时引用同一个对象的场景。
  • 快速共享数据而不需额外开销。

2. 浅复制(Shallow Copy)

机制

  • 复制外层对象:浅复制创建一个新的对象,但只复制了原始对象的外层结构。对于嵌套对象(如列表中的列表),它只复制引用,而不是递归复制内部对象。
  • 部分独立:新对象的顶层结构独立,但嵌套结构仍然共享。

示例

使用 .copy()copy.copy()(针对通用对象)

import copy

x = [<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值