浅析Python中深拷贝和浅拷贝
admin
2023-07-21 10:22:25
0

按照以下不同情况,在IDE中逐个解除注释,就明白了


import copy

"""
第一种情况,不可变类型变量,都是引用
"""
# a = 1
# a = (11, 222, 333)
# a = 'string'
# a = True
# b = a
#
# print(id(a))
# print(id(b))
#
# c =copy.copy(a)
# d = copy.deepcopy(a)
# print(id(c))
# print(id(d))

"""
第二种情况,可变类型变量,浅拷贝和深拷贝都开辟了空间
备注:[(1,2),3]外层可变,内层不可变,同此类型。
"""
# a = [2, 3, 4]
# # a = {2,5,6}
# # a = {"name": "jim"}
# b = a
# c =copy.copy(a)
# d = copy.deepcopy(a)
#
# print(id(a))
# print(id(b))
# print(id(c))
# print(id(d))
#
# # ................
# a.append(5)
# # ----------------
#
# print(a)
# print(b)
# print(c)
# print(d)

"""
第三种情况,内外层都是不可变类型的,深浅拷贝都是引用
"""
# a = ((1,2),)
# b = a
# c =copy.copy(a)
# d = copy.deepcopy(a)
#
# print(id(a))
# print(id(b))
# print(id(c))
# print(id(d))
#
#
# print(a)
# print(b)
# print(c)
# print(d)

"""
第四种情况,外层不可变,内层可变,因为浅拷贝对不可变类型只是指向了,也即引用了内存地址,深拷贝重新开辟了内存地址。
"""
# e = 1
# f = 2
# list1 = [e, f]
# a = (list1,) # a= ([1,2],)
# b = a
#
# print(id(a))
# print(id(b))
#
# c =copy.copy(a)
# d = copy.deepcopy(a)
# print(id(c))
# print(id(d))
#
# list1.append(8)
#
# print(id(a))
# print(id(b))
# print(id(c))
# print(id(d))
# print(a)
# print(b)
# print(c)
# print(d)

"""
第五种情况,外层可变,内层可变----真正体现浅拷贝和深拷贝的差距,a[:]是一种浅拷贝。深浅拷贝都重新开辟了内存空间,浅拷贝的内层元素只是引用了内存地址,深拷贝的内层元素也重新开辟了内存空间。

"""
e = 1
f = 2
list1= [e,f]

g = 3
h = 4
list2 = [g,h]

a = [list1,list2]
b = a
c =copy.copy(a)
d = copy.deepcopy(a)

print(id(a))
print(id(b))
print(id(c))
print(id(d))

print(a)
print(b)
print(c)
print(d)

print("*" * 20)

# 改变e或者f的元素

list1.append('list1')

print(id(a))
print(id(b))
print(id(c))
print(id(d))

print(a)
print(b)
print(c)
print(d)

print("*" * 20)
a.append('a')

print(id(a))
print(id(b))
print(id(c))
print(id(d))

print(a)
print(b)
print(c)
print(d)

相关内容

热门资讯

白宫宴会厅越建越贵,特朗普被曝... 白宫宴会厅越建越贵,特朗普被曝动用公款,这到底是怎么回事?特朗普为何对宴会厅如此执着?特朗普心心念念...
外墙防水施工多少钱一平方 外墙防水多少钱一平方米45-70元1、需要根据当地市场行情及施工环境来估算,一线城市人工费相对来说比...
南宁外墙渗水防水补漏多少钱 其他2条回答 回复者:花与少年cn 外墙防水的话,如果漏的情况不多。可以建议用补漏剂,这样节约成...
建筑防水布大概多少钱 已有2条回答 回复者:gsk88952481 建筑防水布的价格主要是在55元一平方米,这种建...
请问做外墙防水堵漏的师傅一天多... 已有2条回答 回复者:魏滨海 外墙防水堵漏楼主你好,很高兴我能为你回答这个问题,现在这样的师...
新房楼顶有裂缝正常吗 不正常,屋顶墙体之间出现伸缩缝,造成乳胶漆墙面产生裂纹,可以先铲除墙面基层,将裂缝清洗干净后,再往裂...
纸尿裤事件经历反转再反转,国家... 极目新闻评论员 屈旌一纸检测报道,牵动万千父母的心;两轮舆论反转,让一场婴幼儿用品安全事件变成罗生门...
原创 传... 6月20日消息,据科技媒体FundaAI报道,英特尔已与中国台湾第二大晶圆代工厂联华电子(UMC,简...
小米最高端旗舰!MIX Fol... 据博主数码闲聊站透露,小米一款型号为2608BPX34C的全新机型正式通过工信部入网认证,这款产品预...
父亲节礼物指南:千元大爆品,全... 六月是充满温情的月份,端午节与父亲节接踵而至,加之618大促的余热未消,正是为父母更换新手机的绝佳时...