콘텐츠로 건너뛰기

파이썬에서 개체 참조 전달 방법은 무엇인가요?

[

파이썬에서 참조로 인자를 전달하는 방법을 배우려면 이 튜토리얼이 유용할 것입니다. 튜토리얼에서는 파이썬의 함수 인자 처리 방식에 대해 알려주고 있으며, 함수 인자로 참조로 전달하기 위한 몇 가지 최선의 방법을 학습할 수 있습니다.

이 튜토리얼에서 다음을 배울 수 있습니다:

  • 참조로 인자를 전달하는 것의 의미와 이를 원하는 이유
  • 값으로 인자를 전달하는 것과 파이썬의 독특한 접근 방식과를 구분하는 참조로 인자 전달의 차이
  • 파이썬에서 함수 인자의 동작 방식
  • 파이썬에서 참조로 전달하기 위해 일부 변경 가능한 자료형을 사용하는 방법
  • 파이썬에서 참조로 인자를 복제하기 위한 최선의 방법은 무엇인지

참조로 인자 전달이란?

참조로 인자를 전달하기에 앞서, 이 용어 자체를 자세히 살펴보면 이를 구성하는 개념을 파악하는 데 도움이 됩니다:

  • 전달은 함수에 인자를 제공하는 것을 의미합니다.
  • 참조에 의해는 함수에 전달하는 인자가 메모리에 이미 존재하는 변수의 참조임을 의미하며, 그 변수의 독립적인 사본이 아닙니다.

함수에 기존 변수의 참조를 전달하기 때문에, 이 참조를 통해 수행되는 모든 작업은 해당 참조가 가리키는 변수에 직접 영향을 미칩니다. 이를 실제로 어떻게 사용하는지 살펴보겠습니다.

아래의 예에서는 C#에서 변수를 참조로 전달하는 방법을 보여줍니다. 강조된 줄에서 [ref 키워드](https://docs.microsoft.com/en-us/dotnet/csharp/language- reference/keywords/ref)가 사용된 것에 주목하세요:

C#

using System;
// 출처:
// https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/passing-parameters
class Program
{
static void Main(string[] args)
{
int arg;
// 참조로 전달.
// 인수는 참조에 의해 전달되며, 호출한 코드에서 해당 변수의 값을 직접 변경할 수 있습니다.
DoubleAndDisplay(ref arg);
Console.WriteLine(arg); // 출력: 200
Console.ReadLine();
}
static void DoubleAndDisplay(ref int val)
{
val = val * 2;
Console.WriteLine(val);
}
}

인수 arg를 참조로 전달하는 예제입니다. DoubleAndDisplay 함수에서 val 매개변수에 대한 참조를 받아 값을 변경한다는 점에 주목하세요. Main 함수에서 DoubleAndDisplay(ref arg)를 호출하면 arg 변수의 값이 직접 변경됩니다. 따라서 Console.WriteLine(arg);가 실행되면 변경된 값인 200이 출력됩니다.

파이썬에서는 참조로 인자를 직접 전달하는 기능은 없지만 몇 가지 방법으로 참조로 전달하는 것과 유사한 동작을 나타낼 수 있습니다. 이러한 방법 중 몇 가지를 알아보겠습니다. (이하 생략)