문제:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!