>백엔드 개발 >파이썬 튜토리얼 >사전의 얕은 복사본을 업데이트해도 원본이 변경되지 않는 이유는 무엇입니까?

사전의 얕은 복사본을 업데이트해도 원본이 변경되지 않는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-01 11:21:10359검색

Why Doesn't Updating a Shallow Copy of a Dictionary Change the Original?

"Shallow" Copy 사전을 업데이트해도 "Original" 사전이 업데이트되지 않는 이유는 무엇입니까?

Shallow Copy 이해

언제 사전의 얕은 복사본을 생성하면 사전 개체가 완전히 복사되지 않습니다. 대신 원본 개체에 대한 새 참조가 만들어집니다. 즉, 얕은 복사본에 대한 변경 사항은 원본 사전에도 반영됩니다.

예: 사전

다음 예를 고려하세요.

original = dict(a=1, b=2)
new = original.copy()
new.update({'c': 3})

이 경우 new는 원본의 얕은 복사본입니다. new가 {'c': 3}으로 업데이트되면 원본과 새 사전이 모두 동일한 기본 객체를 참조하기 때문에 원래 사전은 변경되지 않은 상태로 유지됩니다.

목록의 얕은 복사와 대조

얕게 복사하면 목록이 다르게 동작합니다. 목록의 단순 복사본을 만들 때 기본 목록 개체에 대한 새 참조가 만들어집니다. 그러나 목록은 독립적으로 수정될 수 있는 변경 가능한 개체이므로 얕은 복사본에 대한 변경 사항은 원본 목록에 영향을 주지 않습니다.

깊은 복사 이해

얕은 복사본과 달리 복사, 심층 복사는 원본 개체의 독립적인 새 복사본을 만듭니다. 즉, 전체 복사본에 대한 변경 사항은 원본 개체에 영향을 미치지 않습니다.

해결 방법

원본 사전을 업데이트하려면 전체 복사본을 생성해야 합니다. 얕은 복사본 대신. 다음 코드는 copy.deepcopy()를 사용하여 전체 복사본을 생성합니다.

import copy
new = copy.deepcopy(original)
new.update({'c': 3})

이제 원본은 그대로 유지되고 새 값은 업데이트된 값을 갖습니다.

위 내용은 사전의 얕은 복사본을 업데이트해도 원본이 변경되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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