python 内置函数 copy()和deepcopy()的区别

copy() 和 deepcopy() 的区别

copy和deepcopy的区别:

模块导入:

from copy import copy, deepcopy
  • copy
  1. 使用copy()函数复制的变量和原数据的标识符不同;
  2. 但是其中可变数据类型是相通的(包括list、dict、set),原数据和复制后的数据一变俱变;
  3. 不可变数据类型(字符串、元组等)不相通,示例如下
a = {"x": [1, 2, 3, 4], "u": "hello"}

b = copy(a)
b["x"][1] = 10
b["u"] = "world"

print(id(a) == id(b))
print("a: ", a)
print("b: ", b)

False
a: {'x': [1, 10, 3, 4], 'u': "hello"}
b: {'x': [1, 10, 3, 4], 'u': "world"}

id(object) 返回对象的唯一标识符,标识符是个唯一的整数

  • deepcopy
  1. 使用deepcopy()函数复制的变量和原数据的标识符不同;
  2. 原数据和复制后的数据没有任何关联,互不干扰
a = {"x": [1, 2, 3, 4], "u": "hello"}

b = deepcopy(a)
b["x"][1] = 10
b["u"] = "world"

print(id(a) == id(b))
print("a: ", a)
print("b: ", b)

False
a: {'x': [1, 2, 3, 4], 'u': "hello"}
b: {'x': [1, 10, 3, 4], 'u': "world"}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值