약한 복사와 깊은 복사
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] (변경되지 않음)
약한 복사와 깊은 복사는 객체 또는 변수의 복사 방법에 따라 원본과 복사본이 서로 다른 동작을 보입니다. 약한 복사는 원본과 복사본이 같은 객체를 참조하게 되어, 한 객체를 변경하면 다른 객체에도 영향을 미칠 수 있습니다. 반면에 깊은 복사는 원본과 복사본이 완전히 독립적인 객체로 동작하여, 한 객체를 변경하더라도 다른 객체에는 영향을 미치지 않습니다.
반응형
'개발 > 토막난 상식(정리중)' 카테고리의 다른 글
변수명을 위한 비지 니스 용어 (0) | 2023.05.18 |
---|---|
models 이름 설정 시 숫자 사용하지 않는 걸 권장 (0) | 2023.04.17 |
REST vs GraphQL (0) | 2023.03.29 |
Attempted import error: 'theme' is not exported from 'antd'. (0) | 2023.03.28 |
link a (0) | 2023.03.28 |