python的复制,深拷贝和浅拷贝的区别
答案:2 悬赏:10
解决时间 2021-01-31 08:32
- 提问者网友:夢醒日落
- 2021-01-31 01:19
python的复制,深拷贝和浅拷贝的区别
最佳答案
- 二级知识专家网友:老鼠爱大米
- 2021-01-31 02:05
在Python中存在深拷贝与浅拷贝的区别,相信有些Python初学者可能就有些疑惑,是指什么意思呢?
1. 赋值其实只是传递对象引用,引用对象id是一样的。
2. 浅拷贝是指拷贝的只是原始对象元素的引用,换句话说,浅拷贝产生的对象本身是新的,但是它的内容不是新的,只是对原对象的一个引用。
3. 深拷贝是指完全拷贝原始对象,而且产生的对象是新的,并且不受其他引用对象的操作影响。
1. 赋值其实只是传递对象引用,引用对象id是一样的。
2. 浅拷贝是指拷贝的只是原始对象元素的引用,换句话说,浅拷贝产生的对象本身是新的,但是它的内容不是新的,只是对原对象的一个引用。
3. 深拷贝是指完全拷贝原始对象,而且产生的对象是新的,并且不受其他引用对象的操作影响。
全部回答
- 1楼网友:洒脱疯子
- 2021-01-31 03:11
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
一个很好的例子:
import copy
a = [1, 2, 3, 4, ['a', 'b']]#原始对象
b = a#赋值,传对象的引用
c = copy.copy(a)#对象拷贝,浅拷贝
d = copy.deepcopy(a)#对象拷贝,深拷贝
a.append(5)#修改对象a
a[4].append('c')#修改对象a中的['a', 'b']数组对象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d
输出结果:
a =[1, 2, 3, 4, ['a', 'b', 'c'], 5]
b =[1, 2, 3, 4, ['a', 'b', 'c'], 5]
c =[1, 2, 3, 4, ['a', 'b', 'c']]
d =[1, 2, 3, 4, ['a', 'b']]
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
一个很好的例子:
import copy
a = [1, 2, 3, 4, ['a', 'b']]#原始对象
b = a#赋值,传对象的引用
c = copy.copy(a)#对象拷贝,浅拷贝
d = copy.deepcopy(a)#对象拷贝,深拷贝
a.append(5)#修改对象a
a[4].append('c')#修改对象a中的['a', 'b']数组对象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d
输出结果:
a =[1, 2, 3, 4, ['a', 'b', 'c'], 5]
b =[1, 2, 3, 4, ['a', 'b', 'c'], 5]
c =[1, 2, 3, 4, ['a', 'b', 'c']]
d =[1, 2, 3, 4, ['a', 'b']]
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯