copy 키워드는 데이터 구조, 객체 또는 변수의 복사본을 생성하는 데 사용됩니다. 기본적으로 파이썬에서 변수를 할당하면 실제 객체의 참조가 할당됩니다. 따라서 원본 객체가 변경되면 복사본도 변경됩니다. 그러나 copy 키워드를 사용하여 복사본을 만들면, 원본 객체의 변경과는 독립적으로 복사본을 조작할 수 있습니다.
copy 모듈은 파이썬의 기본 모듈 중 하나이며, 다양한 복사 기능을 제공합니다. 이 모듈에는 얕은 복사와 깊은 복사의 두 가지 주요 함수가 있습니다.
1. 얕은 복사 (shallow copy): 얕은 복사는 복사본을 생성하면서 원본 객체의 일부 요소만 복사합니다. 이는 원본 객체와 복사본이 동일한 객체를 참조하게 되므로, 원본 객체의 변경이 복사본에 영향을 줄 수 있습니다. 얕은 복사는 copy() 함수를 사용하여 수행할 수 있습니다.
2. 깊은 복사 (deep copy): 깊은 복사는 복사본을 생성하면서 원본 객체의 모든 요소를 복사합니다. 이는 원본 객체와 복사본이 독립적인 객체를 참조하게 되므로, 원본 객체와 복사본이 상호작용하는 일이 없습니다. 깊은 복사는 deepcopy() 함수를 사용하여 수행할 수 있습니다.
다음은 copy 모듈을 사용하여 얕은 복사와 깊은 복사를 수행하는 예제 코드입니다:
import copy
# 얕은 복사 (shallow copy)
original_list = [1, 2, [3, 4]]
copied_list = copy.copy(original_list)
# 원본 리스트 변경
original_list[0] = 5
print(original_list) # 출력: [5, 2, [3, 4]]
print(copied_list) # 출력: [1, 2, [3, 4]]
# 깊은 복사 (deep copy)
original_list = [1, 2, [3, 4]]
copied_list = copy.deepcopy(original_list)
# 원본 리스트 변경
original_list[0] = 5
original_list[2][0] = 6
print(original_list) # 출력: [5, 2, [6, 4]]
print(copied_list) # 출력: [1, 2, [3, 4]]
위 예제에서 볼 수 있듯이, 얕은 복사는 원본 리스트의 변화가 복사본 리스트에도 영향을 주는 것을 확인할 수 있습니다. 반면에 깊은 복사는 원본 리스트의 변화와 복사본 리스트의 변화가 서로 독립적으로 다르게 유지됩니다.
자세한 내용은 파이썬 공식 문서의 copy 모듈 섹션을 참조하시기 바랍니다.
파이썬 공식 문서 링크: [copy 모듈 문서](https://docs.python.org/3/library/copy.html)
댓글