python 笔记(二) 深拷贝和浅拷贝

本文详细解释了Python中浅拷贝与深拷贝的概念及应用,通过实例对比两种拷贝方式的区别,阐述了它们在内存分配上的不同,帮助读者深入理解拷贝机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浅拷贝:

# 浅拷贝(仅拷贝指向的地址)

a = [1, 2, 3]
b = a
print("a id:", id(a))
print("b id:", id(b))
a.append(4)
print("b is:", b)

输出:

浅拷贝可以理解为仅拷贝指向内存的地址,a指向【1,2,3】,b也是指向【1,2,3】,变量b并不在内存中单独开辟空间

深拷贝:

# 深拷贝(拷贝其指向内存的值)

import copy
x = [1, 2, 3]
y = copy.deepcopy(x)
print("x和y在内存在的位置".center(30, "*"))
print("x id:", id(x))
print("y id:", id(y))
print("验证深拷贝".center(30, "-"))
x.append("four")
print("x:", x)
print("y:", y)

输出:

深拷贝可以通过 copy 模块下的 deepcopy() 方法实现,深拷贝是将其指向的值拷贝出来单独存放在一块内存中,原来指向地址的值改变不影响深拷贝

copy()和deepcopy()的区别:

import copy

"""
copy() 与 deepcopy()的区别
"""
a = [1, 2, 3]
b = ["x", "y", "z"]

c = [a, b]
d = copy.deepcopy(c)
e = copy.copy(c)

print("c的值:", c)
print("d的值:", d)
print("c的值:", c)

print("c id:", id(c))
print("d id:", id(d))
print("e id:", id(e))

print("copy() 与 deepcopy()的区别".center(30, "—"))
a.append(10)
print("c :", c)
print("e :", e)
print("d :", d)

输出:

结论:

       copy()方法仅拷贝与其最紧密的一层(这里将c中的内容拷贝)存放在内存中

       deepcopy()方法拷贝其最底层的值

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值