Python 복사 모듈

Copy 모듈은 리스트, 객체, 배열 등의 다양한 요소를 복사하는 것과 관련된 함수들의 집합입니다. 얕은 복사 (shallow copies) 와 깊은 복사 (deep copies) 모두를 만드는 데 사용될 수 있습니다.

Python 3 문서에서 발췌

Python 의 할당문은 객체를 복사하지 않고, 대상과 객체 사이에 바인딩을 생성합니다. 변경 가능한 항목을 포함하거나 변경 가능한 항목으로 구성된 컬렉션의 경우, 한 복사본을 변경할 때 다른 복사본에 영향을 주지 않으려면 때때로 복사가 필요합니다. 이 모듈은 일반적인 얕은 (shallow)깊은 (deep) 복사 작업을 제공합니다.

얕은 복사 작업 (Shallow copy operations)

얕은 복사는 새로운 복합 객체를 구성한 다음 (가능한 범위 내에서) 원본에 있는 객체에 대한 참조를 그 안에 삽입합니다.

copy.copy(x) x 의 얕은 복사본을 반환합니다.

import copy
a = [[1],[2],[3]]
# 얕은 복사본 생성 (중첩된 리스트는 여전히 참조됨)
b = copy.copy(a)

a
[[1], [2], [3]]
b
[[1], [2], [3]]

copy 모듈을 가져오지 않으면 사용할 수 없습니다

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'copy' is not defined

깊은 복사 작업 (Deep copy operations)

깊은 복사는 새로운 복합 객체를 구성한 다음, 재귀적으로 원본에서 발견된 객체의 복사본을 그 안에 삽입합니다.

copy.deepcopy(x[, memo]) x 의 깊은 복사본을 반환합니다.

import copy
a = [[1],[2],[3]]
# 깊은 복사본 생성 (완전히 독립적인 복사본)
b = copy.deepcopy(a)

# 원본 수정
a[0][0] = 0
a[1] = None

a
[[0], None, [3]]
b
[[1], [2], [3]]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.