您的位置:首页 > 编程语言 > Python开发

python学习笔记:深拷贝,浅拷贝

2015-03-05 00:00 447 查看
摘要: 深拷贝
浅拷贝

引用模块 copy

import copy


>>> a=[1,2,3,['a','b','c']]
>>> b=a
>>> a
[1, 2, 3, ['a', 'b', 'c']]
>>> b
[1, 2, 3, ['a', 'b', 'c']]
#在a后加元素4
>>> a.append(4)
>>> a
[1, 2, 3, ['a', 'b', 'c'], 4]
>>> b
[1, 2, 3, ['a', 'b', 'c'], 4]
#进行a的浅拷贝,拷贝结果为c
>>> c = copy.copy(a)
>>> c
[1, 2, 3, ['a', 'b', 'c'], 4]
#给a后加元素‘5’
>>> a.append('5')
>>> a
[1, 2, 3, ['a', 'b', 'c'], 4, '5']
>>> b
[1, 2, 3, ['a', 'b', 'c'], 4, '5']
>>> c
[1, 2, 3, ['a', 'b', 'c'], 4]#发现c没有增加元素‘5’
#给a的元素3加元素‘d’
>>> a[3].append('d')
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 4, '5']
>>> b
[1, 2, 3, ['a', 'b', 'c', 'd'], 4, '5']
>>> c
[1, 2, 3, ['a', 'b', 'c', 'd'], 4]#发现c[3]增加了元素'd'
#进行a的深拷贝,拷贝结果为d
>>> d = copy.deepcopy(a)
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 4, '5']
>>> b
[1, 2, 3, ['a', 'b', 'c', 'd'], 4, '5']
>>> c
[1, 2, 3, ['a', 'b', 'c', 'd'], 4]
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 4, '5']
#给a后加元素‘6’
>>> a.append('6')
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 4, '5', '6']
>>> b
[1, 2, 3, ['a', 'b', 'c', 'd'], 4, '5', '6']
>>> c
[1, 2, 3, ['a', 'b', 'c', 'd'], 4]
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 4, '5']#浅拷贝c和深拷贝d都没有增加元素['6']
#给a[3]元素增加元素'e'
>>> a[3].append('e')
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd', 'e'], 4, '5', '6']
>>> b
[1, 2, 3, ['a', 'b', 'c', 'd', 'e'], 4, '5', '6']
>>> c
[1, 2, 3, ['a', 'b', 'c', 'd', 'e'], 4]
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 4, '5']#浅拷贝增加了元素'e',深拷贝没有增加元素'e'。


总结:

浅拷贝只拷贝父对象,不拷贝子对象。
深拷贝拷贝父对象和子对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息