Python 学习日记第六篇 -- 深浅拷贝

Posted

tags:

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

深浅拷贝:

    1、字符串和数字

import copy
#浅拷贝
copy.copy()
#深拷贝
copy.deepcopy()

######################################################################################
a1 = "string"
#a1 = 11
a2 = a1
a3 = copy.copy(a1)
a4 = copy.deepcopy(a1)
print(id(a1))
print(id(a2))
print(id(a3))
print(id(a4))

##########
result:
2719424
2719424
2719424
2719424

  由上,可以看出字符串与数字,赋值、浅拷贝、深拷贝,其结果是一样的,都指向了同一个内存地址


   2、字典,列表,元组

1、赋值:只是创建了一个引用,内存地址不变
d1 = {‘k1‘:‘v1‘,‘k2‘:123,‘k3‘:[11,‘22‘,]}
d2 = d1
print(id(d1))
print(id(d2))
##########
result:
5349704
5349704


技术分享

2、浅拷贝,在内存中额外创建第一层引用
d1 = {‘k1‘:‘v1‘,‘k2‘:123,‘k3‘:[11,‘22‘,]}
d2 = copy.copy(d1)
print(id(d1))
print(id(d1[‘k3‘]))
print(id(d2[‘k3‘]))
print(id(d2))
##########
result:
34971976
35475168
35475168
35225192

技术分享

3、深拷贝,在内存中创建除字符串与数字外的所有层
d1 = {‘k1‘:‘v1‘,‘k2‘:123,‘k3‘:[11,‘22‘,]}
d2 = copy.deepcopy(d1)
print(id(d1))
print(id(d1[‘k3‘]))
print(id(d2[‘k3‘]))
print(id(d2))
##########
result:
6922568
7425760
7361520
6922808

技术分享

以上是关于Python 学习日记第六篇 -- 深浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

python之深浅拷贝(基础四)

小刘同学的第六篇日记

舔狗的故事-MySQL客户端与服务端的爱恨情仇-《从0到1-全面深刻理解MySQL系列-第六篇》

Python学习第六篇:lambda 表达式

Python学习第六篇:lambda 表达式

20200104--python学习第六天