>  기사  >  백엔드 개발  >  파이썬의 깊은 복사와 얕은 복사

파이썬의 깊은 복사와 얕은 복사

巴扎黑
巴扎黑원래의
2016-11-29 11:35:411036검색

copy.copy 얕은 복사는 상위 개체만 복사하고 개체의 내부 하위 개체는 복사하지 않습니다.

copy.deepcopy 전체 복사 복사 개체 및 해당 하위 개체

예:

>>> import copy

>> > ; a=[1,2,3,4,['a','b']]

>>> b=a                                                        이는 이제 B와 A가 동일한 메모리 영역을 가리키는 것과 같습니다.

A를 수정하면

& gt & gt; ) #얕은 복사 복사 . c와 a는 이제 두 개의 별도 메모리 영역이 됩니다.

>>> d=copy.deepcopy(a) # 전체 복사. 완전히 독립적인 메모리 영역과 동일

>>> a.append(5)                                                                                                                                                                                                   는 얕은 복사에 영향을 미치나요? ;> a[4].append('c') # 이것은 즉, 여전히

>>> print 'a',a

a [1, 2, 3, 4, ['a', 'b', 'c'], 5]

>>> 인쇄 'b',b

b [1, 2, 3, 4, ['a', 'b', 'c'], 5]

>>> 인쇄 'c',c

c [1, 2, 3, 4, ['a', 'b', 'c']]

>>> 인쇄 'd',d

d [1, 2, 3, 4, ['a', 'b']]

>>>

복사하면 서로 독립적입니다.

copy.copy와 마찬가지로 얕은 복사본은 상위 개체이기 때문에 실제로 만들어지므로 상위 개체는 영향을 받지 않으며 두 개의 별도 영역이 있습니다.

결론: 어느 쪽을 복사하든 별도의 메모리 영역이다. 원래 메모리와는 별개입니다. 어떻게 수정해도 나에게는 영향이 없습니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.