콘텐츠로 건너뛰기

파이썬 참조로 값 전달하는 방법

CodeMDD.io

Python를 통한 참조에 의한 전달: 배경과 모범 사례

파이썬에 익숙해지면 다른 프로그래밍 언어와 다르게 함수의 인수를 기대했을 때 해당 인수가 예상대로 수정되지 않는 경우가 있는 것을 알 수 있습니다. 다른 언어에서는 함수 인수를 변수에 대한 참조로 처리하여 전달하는데, 이를 **참조에 의한 전달(pass by reference)**라고 합니다. 다른 언어에서는 이를 독립적인 값으로 처리하는데, 이를 **값에 의한 전달(pass by value)**라고 합니다.

상대적으로 파이썬의 함수 인수가 처리되는 방식을 이해하고 싶은 중급 수준의 파이썬 개발자라면 이 튜토리얼을 참고하세요. 여기서는 파이썬에서 참조에 의한 전달 구조를 실제 사용 사례를 통해 구현하고, 함수 인수와 관련된 함정을 피하기 위한 여러 모법 사례를 익힐 수 있습니다.

이 튜토리얼에서는 다음과 같은 내용을 다룹니다:

  • 참조에 의한 전달이 무엇이며, 왜 이렇게 사용하는지
  • 참조에 의한 전달과 값에 의한 전달파이썬의 독특한 처리 방식과의 차이점
  • 파이썬에서 함수 인수의 동작 방식
  • 파이썬에서 참조에 의한 전달을 구현하는 데 사용되는 특정 가변 유형
  • 파이썬에서 참조에 의한 전달을 재현하기 위한 최상의 모법 사례

Additional Resources: [5 Thoughts On Python

참조에 의한 전달의 정의

참조에 의한 전달에 대해 기술적인 세부 사항에 들어가기 전에, 이 용어 자체를 구성 요소로 나누어 살펴보는 것이 도움이 됩니다:

  • 전달: 함수에 인수를 제공하는 것을 의미합니다.
  • 참조에 의한: 함수에 전달하는 인수가 메모리에 이미 존재하는 변수의 참조임을 의미합니다. 독립적인 값의 복사본이 아니라 참조를 통해 함수에 제공됩니다.

함수에 이미 존재하는 변수의 참조를 제공한다는 점에서, 이 참조를 통해 수행되는 모든 작업은 해당 참조가 가리키는 변수에 직접 영향을 미칩니다. 이를 실제로 어떻게 구현하는지 몇 가지 예제를 살펴보겠습니다.

아래에서는 C#에서 변수를 참조로 전달하는 방법을 보여줍니다. 중요한 부분은 하이라이트된 라인에서 ref 키워드의 사용입니다:

using System;
https://codemdd.io/ 출처:
https://codemdd.io/ https:https://codemdd.io/docs.microsoft.comhttps://codemdd.io/en-ushttps://codemdd.io/dotnethttps://codemdd.io/csharphttps://codemdd.io/programming-guidehttps://codemdd.io/classes-and-structshttps://codemdd.io/passing-parameters
class Program
{
static void Main(string[] args)
{
int arg;
https://codemdd.io/ 참조에 의한 전달.
https://codemdd.io/ 값을 업데이트할 때 arg 변수를 직접 수정합니다.
https://codemdd.io/ Dictionary 클래스의 TryGetValue 메서드가 이와 같이 구현됩니다.
void Method(ref int parameter)
{
parameter = 100;
}
arg = 1;
Method(ref arg);
Console.WriteLine(arg); https://codemdd.io/ 출력 결과: 100
}
}

파이썬에서는 참조에 의한 전달이 없지만, 대신 가변 유형을 사용하여 참조에 해당하는 동작을 재현할 수 있습니다. 이런 방식을 이해하기 위해 파이썬에서의 인수 전달에 대해 약간 더 자세히 살펴보겠습니다.