> 백엔드 개발 > 파이썬 튜토리얼 > Python은 값별 전달인가요 아니면 참조별 전달인가요? 참조별 전달 동작을 어떻게 달성할 수 있나요?

Python은 값별 전달인가요 아니면 참조별 전달인가요? 참조별 전달 동작을 어떻게 달성할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-26 05:05:11
원래의
340명이 탐색했습니다.

Is Python Pass-by-Value or Pass-by-Reference, and How Can I Achieve Pass-by-Reference Behavior?

Python에서 참조로 변수 전달

테스트용 클래스를 작성하는 동안 Python의 매개변수가 참조가 아닌 값으로 전달되는 것처럼 보입니다. 이 기사에서는 가정이 올바른지 확인하고 Python에서 참조에 의한 전달을 구현하는 방법을 안내합니다.

값에 의한 전달 및 참조 이해

Python에서는 인수가 참조에 의해 전달됩니다. , 이는 객체에 대한 참조가 함수에 전달됨을 의미합니다. 그러나 이 참조는 값으로 전달됩니다. 이 동작은 변경 가능한 데이터 유형과 불변 데이터 유형의 차이로 인해 발생합니다.

변경 가능 및 불변 데이터 유형

  • 변경 가능한 데이터 유형: 이러한 데이터 유형은 수정될 수 있습니다. 제자리에. 예로는 목록, 사전, 사용자 정의 개체 등이 있습니다. 함수 내에서 이러한 유형을 수정하면 원래 객체의 변경 사항이 반영됩니다.
  • 불변 데이터 유형: 이러한 데이터 유형은 내부에서 수정할 수 없습니다. 문자열, 정수, 튜플이 이 범주에 속합니다. 이러한 유형을 수정해도 원본 개체에는 영향이 없습니다.

변경 가능한 목록의 예

다음 예를 고려하세요.

def try_to_change_list_contents(the_list):
    the_list.append('four')

outer_list = ['one', 'two', 'three']
try_to_change_list_contents(outer_list)
print(outer_list)
로그인 후 복사

목록은 변경 가능하므로 the_list 매개변수는 external_list 개체에 대한 참조입니다. the_list에 'four'를 추가하면 external_list도 수정됩니다.

불변 문자열의 예

반대로 문자열이 있는 다음 예를 고려해 보세요.

def try_to_change_string(my_string):
    my_string = 'Changed'

outer_string = 'Original'
try_to_change_string(outer_string)
print(outer_string)
로그인 후 복사

변경에도 불구하고 함수 내의 my_string 변수는 external_string이 변경되지 않은 상태로 유지됩니다. 이는 문자열이 불변이고 제자리에서 수정될 수 없기 때문에 발생합니다.

Python에서 참조로 전달

원래 변수가 수정되는 참조로 전달을 모방하려면 몇 가지 옵션이 있습니다. :

1. 새 값 반환: 함수는 함수 외부의 원래 변수에 할당할 수 있는 새 값을 반환할 수 있습니다.

2. 객체 속성 수정: 변수가 객체인 경우 함수는 해당 속성 중 하나를 수정할 수 있으며 이는 원래 객체에 반영됩니다.

3. 목록 또는 래퍼 사용: 변수를 목록으로 래핑하고 목록을 함수에 전달할 수 있습니다. 목록을 수정하면 원래 변수에 영향을 미칩니다.

값별 전달 및 참조 메커니즘을 이해하면 Python에서 변수를 원하는 대로 효과적으로 수정할 수 있습니다.

위 내용은 Python은 값별 전달인가요 아니면 참조별 전달인가요? 참조별 전달 동작을 어떻게 달성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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