> 백엔드 개발 > 파이썬 튜토리얼 > Python은 참조별 전달 및 값별 전달을 어떻게 처리합니까?

Python은 참조별 전달 및 값별 전달을 어떻게 처리합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-25 01:29:10
원래의
357명이 탐색했습니다.

How Does Python Handle Pass-by-Reference and Pass-by-Value?

Python의 참조별 전달: 포괄적인 설명

Python에서 함수에 대한 인수 전달은 참조에 의해 수행됩니다. 즉, 전달된 매개변수는 다음 항목에 대한 참조입니다. 실제 개체. 그러나 값으로 참조를 전달하는 것과 실제로 참조로 전달하는 것의 차이점을 이해하는 것이 중요합니다.

값으로 참조 전달

Python에서는 매개변수가 값으로 전달됩니다. 이는 복사본을 의미합니다. 객체의 매개변수는 함수 내의 매개변수에 할당됩니다. 이는 두 가지 의미를 갖습니다:

  1. 변경 가능한 객체: 전달된 객체가 변경 가능한 경우(즉, 내용이 변경될 수 있음) 함수 내 객체에 대한 수정 사항이 반영됩니다. 함수 외부의 원래 객체에서. 이는 함수 매개변수와 원래 객체가 모두 메모리에 있는 동일한 기본 객체를 참조하기 때문입니다.
  2. 불변 객체: 불변 객체(즉, 내용을 변경할 수 없는 객체)의 경우 원본 객체 함수 내에서는 수정할 수 없습니다. 이는 함수의 매개변수가 원본 객체의 복사본이고 복사본을 변경해도 원본에 영향을 주지 않기 때문입니다.

Python에서 참조에 의한 전달 시뮬레이션

실제 참조에 의한 전달은 Python에서 직접 지원되지 않지만 이를 시뮬레이션하는 몇 가지 기술이 있습니다:

  1. 반환 새 값: 함수는 호출 컨텍스트에서 원래 개체를 대체하는 새 값을 반환할 수 있습니다. 엄격하게 참조에 의한 전달은 아니지만 원본 객체를 효과적으로 수정할 수 있습니다.
  2. 래퍼 사용: 래퍼 클래스 또는 목록을 사용하여 객체를 유지하고 전달할 수 있습니다. 참고로. 래퍼는 객체 자체가 아닌 값으로 전달되므로 함수 내의 객체에 대한 수정 사항은 원래 객체에 영향을 미칩니다.

예:

다음 코드는 전달을 보여줍니다. -변경 가능(목록) 및 불변 참조 (문자열):

# Mutable List
def modify_list(the_list):
    the_list.append('four')

outer_list = ['one', 'two', 'three']
print("Before: ", outer_list)
modify_list(outer_list)
print("After: ", outer_list)

# Immutable String
def modify_string(the_string):
    the_string = 'In a kingdom by the sea'

outer_string = 'It was many and many a year ago'
print("Before: ", outer_string)
modify_string(outer_string)
print("After: ", outer_string)
로그인 후 복사

출력:

Before:  ['one', 'two', 'three']
After:  ['one', 'two', 'three', 'four']
Before:  It was many and many a year ago
After:  It was many and many a year ago
로그인 후 복사

출력에서 볼 수 있듯이 목록은 성공적으로 수정되었지만(참조별 전달) 문자열은 변경되지 않은 상태로 유지됩니다(전달 -값 기준).

위 내용은 Python은 참조별 전달 및 값별 전달을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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