Day07 : 浅拷贝和深拷贝

文章介绍了Python中浅拷贝和深拷贝的概念,强调了浅拷贝只复制栈区和地址,而深拷贝则复制栈区和堆区的内容,且对可变类型和不可变类型有区分。通过实例展示了两者在复制对象时的不同效果。
摘要由CSDN通过智能技术生成

1.浅拷贝

        浅拷贝:只进行对栈区的拷贝,不拷贝堆区的内容;言外之意就是,只拷贝它堆区里面的地址。而且,它对可变与不可变类型不区分。

list1 = [111, 222, ['p', 'o']]
list2 = list1.copy()

print(list1)
print(list2)
print(id(list[0]),id(list[1]),id(list1[2]))
print(id(list2[0]),id(list2[1]),id(list2[2]))

# 以下是输出结果:
# [111, 222, ['p', 'o']]
# [111, 222, ['p', 'o']]
# 140709005488360 140709005491912 2033668031616
# 140709005488360 140709005491912 2033668031616

2.深拷贝

        深拷贝:对栈区和堆区的内容都进行拷贝;言外之意就是,它的值和它的地址都进行拷贝。

但是它对可变与不可变进行区分,可变会改变之前的地址,不可变不会改变之前的地址。

import copy

list1 = [111, 222, ['p', 'o']]

list2 = copy.deepcopy(list1)
print(list1)
print(list2)

print(id(list1[0]),id(list1[1]),id(list1[2]))
print(id(list2[0]),id(list2[1]),id(list2[2]))

# 以下是输出结果:
# [111, 222, ['p', 'o']]
# [111, 222, ['p', 'o']]
# 140709005488360 140709005491912 3068320897280
# 140709005488360 140709005491912 3068320899136

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值