>백엔드 개발 >파이썬 튜토리얼 >Python 목록: 값으로 전달합니까, 아니면 참조로 전달합니까?

Python 목록: 값으로 전달합니까, 아니면 참조로 전달합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-27 18:34:12961검색

Python Lists: Pass by Value or Reference?

Python의 목록 조작: 값 전달과 참조 비교

Python에서 목록을 작업할 때 공통적으로 발생하는 문제 중 하나는 전달 개념입니다. 참조를 통해 목록 변경에 어떤 영향을 미치는지 이해합니다. 이 문제를 설명하는 시나리오를 살펴보겠습니다.

a = ['help', 'copyright', 'credits', 'license']
b = a
b.append('XYZ')
print(b)  # ['help', 'copyright', 'credits', 'license', 'XYZ']
print(a)  # ['help', 'copyright', 'credits', 'license', 'XYZ']

이 예에서는 'b' 목록에 값을 추가하려고 하지만 놀랍게도 목록 'a'의 값도 변경됩니다. 이는 Python에서 목록(및 기타 객체)이 참조로 전달되기 때문입니다. 이는 동일한 메모리 위치를 공유한다는 의미입니다.

따라서 'b'를 'a'에 할당하면 새 목록을 생성하지만 동일한 목록을 참조합니다. 따라서 한 목록의 변경 사항은 다른 목록에도 반영됩니다.

값 전달 방법

의도하지 않은 변경을 방지하려면 새 목록을 만들어야 합니다. 그게 원본의 복사본이에요. Python에서는 슬라이싱을 사용하여 이를 달성할 수 있습니다.

b = a[:]

'a' 목록에서 슬라이스 연산자 [:]를 사용하면 'a'의 모든 요소를 ​​포함하는 새 목록 'b'를 생성할 수 있습니다. 하지만 별도의 메모리 위치를 차지합니다. 이제 'b'에 대한 변경 사항은 'a'에 영향을 미치지 않습니다.

위 내용은 Python 목록: 값으로 전달합니까, 아니면 참조로 전달합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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