2020년 2월 25일 화요일

Pass By Reference(참조 전달 방법) in python


Python 언어에서 Pass By Reference(참조 전달 방법) 방법은 어떻게 할까 고민을 하였습니다.
C/C++ 언어에서는 pointer를 이용 하면 될텐데....


아래와 같은 간단한 예제가 있습니다.
fun1()이라는 함수에서 넘겨받은 인자 값을 변하기를 원합니다.

def fun1(param1):
 param1 = "Changed"

if __name__ == "__main__":
 a = "Hello"
 print(a) 
 fun1(a)   # fun1 함수 호출 후 a의 값이 변하기를 원함
 print(a)  

결과는 예상 했던 대로 값이 변하지 않습니다. 요즘 나오는 대부분의 언어들이 값에 의한 전달을 사용하고 있기 때문입니다.

Hello
Hello









~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~









해결하는 방법은 class 를 이용해서 instance값을 전달하는 방법이 있겠습니다.
그런데 굳이 class를 만들지 않고 list를 이용하면 좀 더 쉽게 할 수 있습니다.

해결 소스
def fun1(param1):
 param1[0] = "Changed"

if __name__ == "__main__":
 b = "Hello"
 a = [b]
 print(a[0])
 fun1(a)
 print(a[0])

결과는 원하는 대로 나옵니다.

Hello
Changed











댓글 없음:

댓글 쓰기