Python 深浅copy

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 深浅copy相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python3
import copy

#copy 有两种
#浅copy
#copy.copy()

#深copy
#copy.deepcopy()

‘‘‘
########################
# #
# 字符串于数字的copy #
# #
########################


#内存地址相同,字符串于数字的copy永远都是用的内存中的唯一的地址
#a = 123123
#b = 123123
#print(id(a))
#print(id(b))

#a1 = 123123
#b1 = copy.copy(a1)
#print(id(b1))

a2 = 123123
b2 = copy.deepcopy(a2)
print(id(a2))
‘‘‘

#其他,元组、列表、字典的copy

dic = {‘name‘:‘andy‘,‘age‘:18,‘job‘:‘IT‘,‘pro‘:[1,2,3,4,5]}
#浅copy
dic2 = copy.copy(dic)
print(dic)
print(id(dic))
print(dic2)
print(id(dic2))

#深copy
dic2 = copy.deepcopy(dic)
print(dic)
print(id(dic))
print(dic2)
print(id(dic2))


#实例,网络模版
#假设如下是网络模版,有很多机器都要使用,重复创建太傻了,所以就用到了copy


#浅copy会出错,把不需要修改数据已经修改了,会连同模版一起修改掉
ds = {
‘cup‘:[80,],
‘mem‘:[80,],
‘disk‘:[80,]
}
#print(‘浅copy‘)
# print(ds)
# new_ds = copy.copy(ds)
# new_ds[‘cup‘][0] = 50
# print(new_ds)
# print(ds)


#深copy只修改需要的数据,不会对模版造成影响
print(‘深copy‘)
print(ds)
new_ds = copy.deepcopy(ds)
new_ds[‘cup‘][0] = 50
print(new_ds)
print(ds)

以上是关于Python 深浅copy的主要内容,如果未能解决你的问题,请参考以下文章

Python之深浅copy

python 06 id is == set 深浅copy

python之数据类型补充集合深浅copy

Python的深浅copy

python列表中的深浅copy

我要学python之深浅拷贝原理