python的深浅拷贝copy.deecopy与copy.copy

import copy
a = [11, 22, 33]
b = [44, 55, 66]
# c = [a, b]  # 如果被拷贝对象是可变类型时
c = (a, b)  # 如果被拷贝对象是不可变类型时

d = copy.deepcopy(c)
print(id(c)) # 2791002657280
print(id(d)) # 2791002658240
a.append(100)
print(c) # [[11, 22, 33, 100], [44, 55, 66]]
print(d) #[[11, 22, 33], [44, 55, 66]]
# python的深拷贝是具有递归性质的值拷贝,即并不是对内存中已存在对象的引用,而是重新申请内存创建了对象,而且无论几层都是如此。
# 而且深拷贝不会受被拷贝对象是否是可变类型的影响
'''
d = copy.copy(c)
print(id(c))  # 1350589272768
print(id(d))  # 1350589273728
a.append(100)
print(c)  # [[11, 22, 33, 100], [44, 55, 66]]
print(d)  # [[11, 22, 33, 100], [44, 55, 66]]
# python的浅拷贝不具有递归性质,只会对第一层进行值拷贝,内层数据仍是对原对象的引用
'''
'''
d = copy.copy(c)
print(id(c))  # 1625211654336
print(id(d))  # 1625211654336
# 当c是不可变类型时(此处使用的是元祖)使用copy进行浅拷贝将指向原对象的引用,即第一层都不能进行值拷贝
a.append(100)
print(c)  # ([11, 22, 33, 100], [44, 55, 66])
print(d)  # ([11, 22, 33, 100], [44, 55, 66])
'''

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值