>백엔드 개발 >파이썬 튜토리얼 >Python의 얕은 복사와 깊은 복사: 언제 어느 것을 사용해야 합니까?

Python의 얕은 복사와 깊은 복사: 언제 어느 것을 사용해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-21 10:09:10210검색

Shallow vs. Deep Copy in Python: When to Use Which?

Shallow Copy, Deep Copy, 할당 작업 이해

일반 할당의 비효율성

일반적인 할당 작업은 새 객체를 생성하는 대신 단순히 기존 객체에 대한 참조를 생성합니다. 원래 개체에 대한 변경 사항이 복사된 개체에도 반영되므로 예상치 못한 수정이 발생할 수 있습니다.

얕은 복사본: 표면 수준 복제

얕은 복사본 copy 메소드는 새 객체를 생성하고 원본 객체에 포함된 기존 객체에 대한 참조를 삽입합니다. 이는 원본 개체의 하위 개체에 대한 변경 사항이 얕은 복사본에도 반영된다는 의미입니다.

Deep Copy: 전체 복제

깊은 복사 방법은 새 개체를 생성합니다. 원본 개체에서 찾은 개체의 복사본을 재귀적으로 삽입합니다. 이렇게 하면 원본 개체의 하위 개체에 대한 변경 사항이 전체 복사에 영향을 주지 않습니다.

변경 가능 및 불변 개체에 대한 의미

이러한 복사 작업은 다음에 대해 서로 다른 의미를 갖습니다. 변경 가능 및 불변 객체:

  • 불변 객체 (예: 문자열, 튜플): 불변 개체는 수정할 수 없으므로 얕은 복사본과 깊은 복사본은 차이가 없습니다.
  • 변경 가능한 개체(예: 목록, 사전): 얕은 복사본은 원본 개체의 하위 개체에 대한 참조를 유지하는 반면, 깊은 복사본은 이러한 하위 개체의 새 인스턴스를 생성합니다. 개체.

다음 코드를 고려하세요.

import copy

a = "deepak"
b = (1, 2, 3, 4)
c = [1, 2, 3, 4]
d = {1: 10, 2: 20, 3: 30}

a1 = copy.copy(a)
b1 = copy.copy(b)
c1 = copy.copy(c)
d1 = copy.copy(d)

문자열 및 튜플과 같은 불변 개체의 경우(a 및 b 이 경우) 얕은 복사본과 깊은 복사본 모두 서로 다른 메모리 주소를 가진 새 객체를 생성합니다. 그러나 목록 및 사전(c 및 d)과 같은 변경 가능한 개체의 경우 얕은 복사본은 원본 개체에 대한 새로운 참조를 생성하는 반면, 깊은 복사본은 이러한 개체의 새 인스턴스를 생성합니다.

위 내용은 Python의 얕은 복사와 깊은 복사: 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.