【python提高高级day02】深拷贝、浅拷贝+进一步理解深拷贝+拷贝的其他方式+浅拷贝对不可变类型和可变类型的copy不同+copy.copy和copy.deepcopy的区别

深拷贝、浅拷贝

1. 浅拷贝

  • 浅拷贝是对于一个对象的顶层拷贝

通俗的理解是:拷贝了引用,并没有拷贝内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ak6UhOnB-1579703473950)(../Images/new_12day/QQ20171023-204000@2x.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yqe4vfUp-1579703473950)(../Images/new_12day/QQ20170420-071018@2x.png)]

2. 深拷贝

  • 深拷贝是对于一个对象所有层次的拷贝(递归)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Ykd5Q8J-1579703473951)(../Images/new_12day/QQ20171023-204653@2x.png)]

进一步理解深拷贝

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0hSjh8y4-1579703473951)(../Images/new_12day/QQ20171023-205139@2x.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yw1cJLUe-1579703473952)(../Images/new_12day/QQ20171023-205202@2x.png)]
在这里插入图片描述

3. 拷贝的其他方式

  • 分片表达式可以赋值一个序列

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NnmkllHp-1579703473952)(../Images/new_12day/QQ20171024-074247@2x.png)]

  • 字典的copy方法可以拷贝一个字典

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z9ud1yhL-1579703473952)(../Images/new_12day/QQ20171023-210821@2x.png)]

4. 注意点

浅拷贝对不可变类型和可变类型的copy不同

  1. copy.copy对于可变类型,会进行浅拷贝
  2. copy.copy对于不可变类型,不会拷贝,仅仅是指向
In [88]: a = [11,22,33]
In [89]: b = copy.copy(a)
In [90]: id(a)
Out[90]: 59275144
In [91]: id(b)
Out[91]: 59525600
In [92]: a.append(44)
In [93]: a
Out[93]: [11, 22, 33, 44]
In [94]: b
Out[94]: [11, 22, 33]


In [95]: a = (11,22,33)
In [96]: b = copy.copy(a)
In [97]: id(a)
Out[97]: 58890680
In [98]: id(b)
Out[98]: 58890680

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1iI1twGB-1579703473953)(../Images/new_12day/QQ20170420-071926@2x.png)]

copy.copy和copy.deepcopy的区别

copy.copy

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6erp2zj8-1579703473953)(../Images/new_12day/QQ20171023-211713@2x.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zkf6JdpP-1579703473954)(../Images/new_12day/QQ20171023-211910@2x.png)]
在这里插入图片描述

copy.deepcopy

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YIeWoPwF-1579703473955)(../Images/new_12day/QQ20171023-212206@2x.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Je5rYTCi-1579703473955)(../Images/new_12day/QQ20171023-212352@2x.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mls4KfXz-1579703473956)(../Images/new_12day/QQ20171023-212701@2x.png)]
在这里插入图片描述
在这里插入图片描述

发布了166 篇原创文章 · 获赞 55 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_35456045/article/details/104073199