Python深拷贝与浅拷贝

import copy
# 不可变类型
num1 = 1
str1 = '哈哈哈'
tuple1 = (1, 2, 3)

# 可变类型
list1 = [1, 2, 3]
dict1 = {'name': '马云', 'phone': 110}
set1 = {1, 2, 3}

# 浅拷贝
# 不可变类型
num2 = copy.copy(num1)
str2 = copy.copy(str1)
tuple2 = copy.copy(tuple1)
# 可变类型
list2 = copy.copy(list1)
dict2 = copy.copy(dict1)
set2 = copy.copy(set1)


# 深拷贝
# 不可变类型
num3 = copy.deepcopy(num1)
str3 = copy.deepcopy(str1)
tuple3 = copy.deepcopy(tuple1)
# 可变类型
list3 = copy.copy(list1)
dict3 = copy.copy(dict1)
set3 = copy.copy(set1)

print(f'数字类型:{id(num1)}, ----浅拷贝{id(num2)}, ----深拷贝{id(num3)}')
print(f'字符类型:{id(str1)}, ----浅拷贝{id(str2)}, ----深拷贝{id(str3)}')
print(f'元组类型:{id(tuple1)}, ----浅拷贝{id(tuple2)}, ----深拷贝{id(tuple3)}')
print(f'列表类型:{id(list1)}, ----浅拷贝{id(list2)}, ----深拷贝{id(list3)}')
print(f'字典类型:{id(dict1)}, ----浅拷贝{id(dict2)}, ----深拷贝{id(dict3)}')
print(f'集合类型:{id(set1)}, ----浅拷贝{id(set2)}, ----深拷贝{id(set3)}')

在这里插入图片描述
对于深拷贝和浅拷贝的考察,是Python面试题中经常会被问到的问题,而且在日常的工作中,也会经常掉进这个坑里。对于浅拷贝就是对于一个对象引用的拷贝,而深拷贝就是对对象资源的拷贝。

此外,对于不可变对象(字符串、元组,整型)的修改,需要开辟新的空间,而对于可变对象(列表,字典等)的修改,不需要开辟新的空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值