标签:imp 格式 pre epc 原函数 deepcopy core 改变 ict
copy分为深copy和浅copy
示例
data = {
"name":"alex",
"age":18,
"scores":{
"语文":130,
"数学":60,
"英语":98,
}
}
d2 = data.copy()
data["age"] = 20
data["scores"]["数学"] = 77
print(d2)
print(data)
输出
{‘name‘: ‘alex‘, ‘age‘: 18, ‘scores‘: {‘语文‘: 130, ‘数学‘: 77, ‘英语‘: 98}}
{‘name‘: ‘alex‘, ‘age‘: 20, ‘scores‘: {‘语文‘: 130, ‘数学‘: 77, ‘英语‘: 98}}
分析发现
data["age"] = 20
‘数学‘: 77
,表明均执行 data["scores"]["数学"] = 77
原因
? .copy()只复制了"scores"以上部分,在"scores"里仍与原函数相同(同改变)
结论
? 浅copy会仅复制dict的第一层数据,更深层的scores下面的值依然是共享一份
示例
import copy
data = {
"name":"alex",
"age":18,
"scores":{
"语文":130,
"数学":60,
"英语":98,
}
}
d2 = copy.deepcopy(data)
data["age"] = 20
data["scores"]["数学"] = 77
print(d2)
print(data)
输出
{‘name‘: ‘alex‘, ‘age‘: 18, ‘scores‘: {‘语文‘: 130, ‘数学‘: 60, ‘英语‘: 98}}
{‘name‘: ‘alex‘, ‘age‘: 20, ‘scores‘: {‘语文‘: 130, ‘数学‘: 77, ‘英语‘: 98}}
结论
深copy需要调用copy类
深copy可以复制所有的数据
调用格式
import copy
d2 = copy.deepcopy(data)
标签:imp 格式 pre epc 原函数 deepcopy core 改变 ict
原文地址:https://www.cnblogs.com/aotaot/p/14470511.html