Python에서 객체 복제: 종합 가이드
객체 복사본을 만드는 것은 Python 프로그래밍의 기본 작업이며, 특히 복잡한 데이터를 다룰 때 더욱 그렇습니다. 구조. 이 기사에서는 Python의 복잡한 객체 복사에 대해 자세히 설명합니다. 특히 원본에 대한 변경 사항에 영향을 받지 않는 독립적인 객체를 만드는 데 중점을 둡니다.
얕은 복사와 깊은 복사
Python에는 객체를 복사하는 두 가지 기본 방법, 즉 얕은 복사와 깊은 복사가 있습니다. 얕은 복사는 원본과 동일한 변경 불가능한 필드(예: 정수, 문자열)를 참조하는 새 객체를 생성하지만 변경 가능한 필드(예: 목록, 사전)의 새 복사본을 생성합니다.
예를 들어 다음을 고려하세요. 코드 조각:
original_list = [1, 2, 3]
new_list = original_list[:] # Shallow copy
new_list와 원본 목록은 별도의 개체로 보이지만 둘 다 동일한 기본 데이터를 참조하므로 한 목록에 대한 모든 변경 사항은 다른 목록에 반영됩니다.
완전히 독립적인 객체 생성
진정으로 독립적인 객체를 생성하려면 심층 복사에 의존해야 합니다. 여기에는 중첩된 변경 가능한 구조를 포함하여 모든 필드의 새 복사본을 만드는 작업이 포함됩니다. Python의 copy.deepcopy() 함수가 이 기능을 제공합니다.
이전 예제를 수정해 보겠습니다.
import copy
original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)
이제 new_list를 변경해도 원본_목록에는 영향을 미치지 않습니다.
new_list[2].append(6)
print(original_list) # Output: [1, 2, [4, 5]]
print(new_list) # Output: [1, 2, [4, 5, 6]]
결론
copy.deepcopy() 함수를 활용하여 프로그래머는 객체의 완전히 독립적인 복사본을 생성하여 하나의 변경 사항이 다른 객체에 영향을 미치지 않도록 할 수 있습니다. Python에서 효과적인 객체 조작을 위해서는 얕은 복사와 깊은 복사의 차이점을 이해하는 것이 중요합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3