> 백엔드 개발 > 파이썬 튜토리얼 > Python의 개체 할당은 어떻게 작동하며 독립 복사본을 어떻게 만들 수 있습니까?

Python의 개체 할당은 어떻게 작동하며 독립 복사본을 어떻게 만들 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-07 01:11:15
원래의
551명이 탐색했습니다.

How Does Python's Object Assignment Work, and How Can I Create Independent Copies?

Python의 객체 할당 이해

Python에서 =와 같은 할당 연산자는 객체의 복사본을 생성하지 않습니다. 대신, 메모리에 있는 기존 개체를 참조합니다. 이 동작은 다음 코드에서 볼 수 있듯이 의도하지 않은 결과를 초래할 수 있습니다.

dict_a = dict_b = dict_c = {}
dict_c['hello'] = 'goodbye'

print(dict_a)
print(dict_b)
print(dict_c)
로그인 후 복사

예상 출력:

{}
{}
{'hello': 'goodbye'}
로그인 후 복사

실제 출력:

{'hello': 'goodbye'}
{'hello': 'goodbye'}
{'hello': 'goodbye'}
로그인 후 복사

여기서 예를 들어, 우리는 세 개의 독립적인 사전을 생성할 것으로 예상했습니다. 그러나 결과는 dict_a, dict_b 및 dict_c가 모두 동일한 사전 개체를 참조한다는 것을 보여줍니다. dict_c에 키를 할당하면 세 가지 변수 모두에 반영되는 공유 사전이 수정됩니다.

객체 할당 문제 해결

독립 복사본을 생성하는 원하는 동작을 달성하기 위해 Python은 몇 가지 옵션을 제공합니다.

  1. dict.copy() 메서드: 이 메서드는 사전의 얕은 복사본을 만듭니다. 모든 키-값 쌍을 새 객체에 복사합니다.
dict_a = {1: 2}
dict_b = dict_a.copy()
dict_b[3] = 4

print(dict_a)
print(dict_b)
로그인 후 복사

출력:

{1: 2}
{1: 2, 3: 4}
로그인 후 복사
  1. copy.deepcopy() 함수: 이 함수는 중첩된 모든 항목을 포함하여 사전의 전체 복사본을 생성합니다. 개체.
import copy

dict_a = {1: 2, 'nested': {3: 4}}
dict_b = copy.deepcopy(dict_a)
dict_b['nested'][5] = 6

print(dict_a)
print(dict_b)
로그인 후 복사

출력:

{1: 2, 'nested': {3: 4}}
{1: 2, 'nested': {3: 4, 5: 6}}
로그인 후 복사

이러한 메서드를 사용하면 Python에서 개체 할당을 제어하고 공유 개체에 대한 의도하지 않은 수정을 방지할 수 있습니다.

위 내용은 Python의 개체 할당은 어떻게 작동하며 독립 복사본을 어떻게 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿