logo

Python의 참조와 값으로 전달

C++ 및 Java와 같은 다른 언어에서 Python 프로그래밍을 시작하는 개발자는 Python에서 인수를 전달하는 프로세스로 인해 종종 혼란을 겪습니다. 객체 중심 데이터 모델과 할당 처리는 근본적인 수준에서 혼란의 원인입니다.

이번 글에서는 '개념'에 대해 알아보겠습니다. Python에서 참조로 값을 전달하는 방법 그리고 참조에 의한 전달 예를 이해하려고 노력하십시오. 파이썬에서.

내용의 테이블



Python에서 값으로 전달 및 참조로 전달

미리 읽어본 후 뭔가 펀치를 날리고 싶을 수도 있으니 마음의 준비를 하세요. Python의 인수 전달 모델은 다음과 같습니다. 값에 의한 전달이나 참조에 의한 전달이 아니라 객체 참조에 의한 전달입니다.

함수에 전달하는 개체 유형에 따라 함수는 다르게 동작합니다. 불변 객체는 값에 의한 전달을 표시하는 반면, 변경 가능한 객체는 참조에 의한 전달을 표시합니다.

아래 예에서 값별 전달과 참조별 전달의 차이점을 확인할 수 있습니다.

파이썬3




def> call_by_value(x):> >x>=> x>*> 2> >print>(>'in function value updated to'>, x)> >return> > def> call_by_reference(>list>):> >list>.append(>'D'>)> >print>(>'in function list updated to'>,>list>)> >return> > my_list>=> [>'E'>]> num>=> 6> print>(>'number before='>, num)> call_by_value(num)> print>(>'after function num value='>, num)> print>(>'list before'>,my_list)> call_by_reference(my_list)> print>(>'after function list is '>,my_list)>

>

>

산출

  number before= 6    in function value updated to 12    after function num value= 6    list before ['E']    in function list updated to ['E', 'D']    after function list is ['E', 'D']>

위 코드에서 우리는 Python이 프로그램에서 참조 객체 개념에 의한 호출을 사용하는 방법을 보여주었습니다.

call_by_value() 함수에 정수를 전달합니다. 정수는 불변 객체이므로 Python은 값별 호출에 따라 작동하며 함수에서 변경된 내용은 함수 외부에 반영되지 않습니다.

그런 다음 참조를 통해 함수에 목록을 전달합니다. call_by_reference() 함수에서 변경 가능한 객체인 목록을 전달합니다. Python은 이 함수에서 참조에 의한 호출에 따라 작동하며 함수 내부의 변경 사항은 함수 외부에서도 볼 수 있습니다.

변수는 객체가 아니다

여기서 a는 X와 Y 요소를 포함하는 목록을 가리키는 변수입니다. 그러나 a 자체는 목록이 아닙니다. a를 객체 X와 Y를 포함하는 버킷으로 간주합니다.

 a = ['X', 'Y']>

Python에서 참조에 의한 전달이란 무엇입니까?

참조로 전달이란 함수(참조)를 변수에 전달해야 한다는 의미이며, 이는 해당 변수가 이미 메모리에 존재한다는 의미입니다.

여기서는 변수(버킷)가 함수에 직접 전달됩니다. 변수는 해당 내용(객체)과 함께 제공되는 패키지 역할을 합니다.

위의 코드 이미지에서 list와 my_list는 모두 동일한 컨테이너 변수이므로 메모리의 동일한 개체를 참조합니다. 변수나 객체에 대해 함수가 수행하는 모든 작업은 함수 호출자에 의해 직접 반영됩니다. 예를 들어, 이 함수는 변수의 내용을 완전히 변경하고 완전히 다른 객체를 가리킬 수 있습니다.

또한 이 함수는 아래와 같은 효과로 변수의 내용을 재할당할 수 있습니다.

요약하면 참조별 전달에서는 함수와 호출자가 동일한 변수와 개체를 사용합니다.

Python 예제에서 참조로 전달

이 예에서 mod_list 함수는 참조로 목록을 가져옵니다. 이 함수는 함수 내부에 전달된 목록에 Geeks 문자열을 추가하고 이를 인쇄합니다. 목록은 변경 가능한 데이터 유형이므로 출력에서 ​​볼 수 있듯이 함수 내부 목록에 대한 변경 사항은 함수 외부에도 반영됩니다.

파이썬3




def> modify_list(x):> >x.append(>'Geeks'>)> >print>(>'Inside function:'>, x)> > my_list>=> [>'Geeks'>,>'for'>]> modify_list(my_list)> print>(>'Outside function:'>, my_list)>

>

해시맵
>

산출

  Inside function: ['Geeks', 'for', 'Geeks']    Outside function: ['Geeks', 'for', 'Geeks']>

Python에서 값에 의한 전달이란 무엇입니까?

이 접근 방식에서는 다음의 복사본을 전달합니다. 그만큼 함수의 실제 변수를 매개변수로 사용합니다. 따라서 함수 내부의 매개변수에 대한 수정 사항은 실제 변수에 반영되지 않습니다.

변수나 객체에 대해 함수가 수행하는 모든 작업에 대해서도 마찬가지입니다.

요약하면 함수 호출자의 컨텍스트에 있는 변수 및 개체의 복사본은 완전히 격리됩니다.

Python 예제에서 값 전달

여기서는 불변 데이터 유형인 함수에 정수 x를 전달합니다. 그런 다음 함수 내부의 정수 값을 업데이트하고 업데이트된 값을 인쇄합니다. 정수는 불변 데이터 유형이므로 변경 사항은 함수 외부에 표시되지 않습니다.

파이썬3




def> modify_integer(x):> >x>=> x>+> 10> >print>(>'Inside function:'>, x)> > x>=> 5> print>(>'Before function call:'>, x)> modify_integer(x)> print>(>'After function call:'>, x)>

>

>

산출:

  Before function call: 5    Inside function: 15    After function call: 5>

Python 프로그래밍에서는 함수에 값을 전달하는 동안 참조 개체에 의한 전달 개념을 사용합니다. 이 기사에서는 Python에서 값에 의한 전달과 참조에 의한 전달의 개념을 보여 드리고자 합니다. 우리는 예제를 통해 값을 전달하는 다양한 사례를 보여주었습니다. Python에서 함수에 값을 전달하는 것은 다른 코딩 언어와 다르지만, 이 튜토리얼을 사용하면 개념을 쉽게 이해하고 작업에 구현할 수 있습니다.

또한 읽어보세요:

Python은 참조에 의한 호출인가요 아니면 값에 의한 호출인가요?