码迷,mamicode.com
首页 > 编程语言 > 详细

Python之浅拷贝和深拷贝

时间:2020-01-22 16:05:57      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:eee   独立   pytho   注意   share   例子   code   区别   影响   

介绍

如果你学习过别的编程语言,比如java,那么应该知道shallowcopy和deep copy。在Python中,copy也有深浅之分,而且与直接复制各不相同。

用法

1. 浅拷贝

a = {'n':[1,2,3]} 
b = a.copy() 
a, b
# ({'n': [1, 2, 3]}, {'n': [1, 2, 3]})

a['n'].append(4)
a, b
# ({'n': [1, 2, 3, 4]}, {'n': [1, 2, 3, 4]})

2. 深拷贝

import copy

a = {'n':[1,2,3]} 
b = copy.deeepcopy(a)
a, b
# ({'n': [1, 2, 3]}, {'n': [1, 2, 3]})

a['n'].append(4)
a, b
# ({'n': [1, 2, 3, 4]}, {'n': [1, 2, 3]})

3. 区别

从上面两个例子我们可以看到,使用浅拷贝b会随a的变化而变化,因为他们share的是同一个list地址,而深拷贝中,b和a有独立的list地址互不影响。
而且拷贝与赋值不同,如果是赋值操作,a和b会share同一个字典对象,而拷贝时a和b有各自的字典对象,只不过字典内的list不同而已。
注意,使用深拷贝要import模块copy!

Python之浅拷贝和深拷贝

标签:eee   独立   pytho   注意   share   例子   code   区别   影响   

原文地址:https://www.cnblogs.com/mrdoghead/p/12228618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!