파이썬의 할당은 변수를 객체에 바인딩하는 것이지, 일부 언어와 달리 객체의 복사본을 생성하는 것이 아닙니다. 이 차이는 가변 객체에 있어 매우 중요합니다. 얕은 복사는 새로운 객체를 생성하지만 중첩된 객체는 공유하므로 잠재적인 문제를 야기할 수 있습니다. 깊은 복사는 모든 객체를 재귀적으로 복제하여 완전한 독립성을 제공합니다. `copy` 모듈은 얕은 복사를 위한 `copy()`와 깊은 복사를 위한 `deepcopy()`를 제공합니다. 사용자 정의 클래스는 `__copy__()`와 `__deepcopy__()`를 사용하여 복사 동작을 정의할 수 있습니다. 객체는 스칼라(나눌 수 없는) 또는 복합(컨테이너)으로 분류됩니다. 복합 객체는 가변(변경 가능) 또는 불변(변경 불가능)일 수 있습니다. 가변성은 복사 전략에 영향을 미칩니다. 불변 객체는 재사용의 이점이 있는 반면, 가변 객체는 의도하지 않은 수정을 피하기 위해 깊은 복사가 필요할 수 있습니다. 이러한 개념을 이해하는 것은 복잡한 데이터 구조를 효과적으로 관리하는 데 매우 중요합니다. 이 글에서는 방어적 프로그래밍과 독립적인 데이터 스냅샷 생성을 위해 복사의 중요성을 강조합니다. 얕은 복사와 깊은 복사 중 어느 것을 선택할지는 애플리케이션의 특정 요구 사항에 따라 달라집니다.
realpython.com
Real Python: Shallow vs Deep Copying of Python Objects
Create attached notes ...