약한 복사와 깊은 복사
2023. 4. 12. 11:09ㆍ개발/토막난 상식
반응형
객체 또는 변수의 복사 방법을 설명하는 용어
- 약한 복사(Shallow Copy 또는 Shallow Copying): 약한 복사는 원본 객체 또는 변수의 주소를 복사하여 새로운 객체 또는 변수를 생성하는 것을 말합니다. 즉, 원본과 복사본은 같은 객체를 참조하게 됩니다. 이 경우, 복사본의 변경이 원본에 영향을 미칠 수 있습니다. 원본과 복사본은 동일한 내용을 가지지만, 두 개의 객체가 독립적으로 존재하는 것이 아니라 원본과 복사본이 같은 객체를 공유하게 됩니다.
예를 들어, 리스트 객체의 경우 약한 복사를 수행하면 두 개의 리스트가 같은 원소를 참조하게 됩니다. 따라서 한 리스트를 변경하면 다른 리스트도 동일한 변경이 반영됩니다.
original_list = [1, 2, 3, 4, 5]
shallow_copy_list = original_list.copy() # 약한 복사
original_list[0] = 10
print(original_list) # 출력: [10, 2, 3, 4, 5]
print(shallow_copy_list) # 출력: [1, 2, 3, 4, 5] (변경되지 않음)
- 깊은 복사(Deep Copy 또는 Deep Copying): 깊은 복사는 원본 객체 또는 변수와 그에 속한 객체들까지 모두 복사하여 새로운 객체 또는 변수를 생성하는 것을 말합니다. 원본과 복사본은 완전히 독립적인 객체로 동작하므로 한 객체를 변경하더라도 다른 객체에는 영향을 미치지 않습니다.
예를 들어, 리스트 객체의 경우 깊은 복사를 수행하면 두 개의 리스트가 서로 독립적인 객체가 됩니다. 따라서 한 리스트를 변경하더라도 다른 리스트에는 영향을 미치지 않습니다.
import copy
original_list = [1, 2, 3, 4, 5]
deep_copy_list = copy.deepcopy(original_list) # 깊은 복사
original_list[0] = 10
print(original_list) # 출력: [10, 2, 3, 4, 5]
print(deep_copy_list) # 출력: [1, 2, 3, 4, 5] (변경되지 않음)
약한 복사와 깊은 복사는 객체 또는 변수의 복사 방법에 따라 원본과 복사본이 서로 다른 동작을 보입니다. 약한 복사는 원본과 복사본이 같은 객체를 참조하게 되어, 한 객체를 변경하면 다른 객체에도 영향을 미칠 수 있습니다. 반면에 깊은 복사는 원본과 복사본이 완전히 독립적인 객체로 동작하여, 한 객체를 변경하더라도 다른 객체에는 영향을 미치지 않습니다.
반응형
'개발 > 토막난 상식' 카테고리의 다른 글
Response 와 JsonResponse (0) | 2023.04.12 |
---|---|
백엔드 에서 form값에 대한 검증을 하고 직렬 화 하는 게 좋을까? 직렬 화 하고 검증을 하는 게 좋을까? (0) | 2023.04.12 |
antd 상위 셀과 값이 같을 경우 셀 병합 (0) | 2023.04.11 |
POST PUT (0) | 2023.04.06 |
conda 명령어 (0) | 2023.04.06 |