>백엔드 개발 >파이썬 튜토리얼 >Python 할당은 개체에 대한 복사본이나 참조를 생성합니까?

Python 할당은 개체에 대한 복사본이나 참조를 생성합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-19 12:25:14239검색

Does Python Assignment Create Copies or References to Objects?

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_b와 동일한 메모리 주소에 대한 참조를 할당하는 것입니다. 이는 하나의 사전에 대한 변경 사항이 동일한 기본 객체를 가리키기 때문에 세 변수 모두에 영향을 미친다는 것을 의미합니다.

해결책:

Python에서 객체를 사용하려면 copy 또는 copy.deepcopy 함수를 사용해야 합니다. 다음 코드는 원본 사전의 독립적인 복사본을 생성합니다.

dict_a = dict_b.copy()  # Shallow copy
dict_a = copy.deepcopy(dict_b)  # Deep copy
  • 얕은 복사본: 원본과 동일한 중첩 개체를 참조하는 새 사전을 생성합니다.
  • 전체 복사: 새 사전을 생성하고 중첩된 모든 사전을 재귀적으로 복사합니다.

이러한 기능을 사용하면 한 사전의 변경 사항이 다른 사전에 영향을 미치지 않도록 할 수 있습니다.

위 내용은 Python 할당은 개체에 대한 복사본이나 참조를 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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