频道栏目
首页 > 程序开发 > Web开发 > Python > 正文
python的深拷贝与浅拷贝实例讲解
2018-04-16 10:39:29      个评论    来源:xu_xuekai的博客  
收藏   我要投稿

深拷贝、浅拷贝

1. 浅拷贝

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

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

\
\

2. 深拷贝

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

\

进一步理解深拷贝

\
\

3. 拷贝的其他方式

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

\

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

\

4. 注意点

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

copy.copy对于可变类型,会进行浅拷贝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

\

copy.copy和copy.deepcopy的区别

copy.copy

\
\

copy.deepcopy

\
\
\

一句话总结:浅拷贝是将对象顶层拷贝,拷贝了引用,并没有拷贝内容,原对象改变新对象也跟着改变。深拷贝是对一个对象所有层次的拷贝,但是修改原来的值,新对象不受影响。浅拷贝对于可变类型和不可变类型是不同的,对于可变类型只拷贝顶层,不可变类型依然是原来的对象。

点击复制链接 与好友分享!回本站首页
上一篇:python中的垃圾回收机制实例讲解
下一篇:最后一页
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站