본문 바로가기
Python

파이썬 초급 #049 함수 - 참조값에 의한 인수 전달(call by value)

by Smart Factory in 2020 2022. 4. 13.
728x90
반응형

안녕하세요. 스마트팩토리입니다. 

파이썬 초급 #049 함수 - 참조값에 의한 인수 전달(call by value)애 대해 알아보겠습니다. 

1. 참조값에 의한 인수 전달

값에 의한 호출 
즉 값만 전달되고 변수는 변하지 않는다. 

코드를 보면서 알아보겠습니다. 

def modify(n):
    n=n+1
    print("함수내 n 값은 :", n)
    print("함수내  n 주소값 : ", id(n))

 

함수 영역입니다. 

~~~~~~~

 

n=10;
print("호출전 n 의 값은 :" , n)
print("호출 전 n 주소값 : ", id(n))

 

변수 n 에 10 이 저장되고 

그 출력값과 주소값을 보여줍니다. 

 

modify(n)

함수 부분이 실행됩니다. 

함수에서 호출된 인수 값 즉 n 값이 1 증가되고 그 주소값도 출력됩니다.

함수 호출전 n 값의 주소값이 다른 것을 알 수 있습니다. 이런 경우가 참조값에 의한 인수전달 즉 값에 의한 전달이라고 합니다. 이는 값에 의한 호출이라고도 합니다. pass by vlau, call by value라고 합니다. 즉 인수값이 전달되어 함수를 벗어나면 해당 변수의 인수값에는 변화를 주지 않습니다. 


print("호출후 n 의 값은 :" , n)
print("호출 전 n 주소값 : ", id(n))

함수를 벗어나서 다시 메인으로 와서 변수 n 값과 주소값이 출력됩니다. 

처음 n 값과 주소값이 그대로 출력됩니다. 

 

즉 변수 값이 전달되는 과정에서는 변수가 가는 것이 아니기 때문에 함수를 거친 후에 메인으로 와도 변수의 값은 변화가 없다는 것을 알 수 있습니다.

def modify(n):
    n=n+1
    print("함수내 n 값은 :", n)
    print("함수내  n 주소값 : ", id(n))

n=10;
print("호출전 n 의 값은 :" , n)
print("호출 전 n 주소값 : ", id(n))

modify(n)
print("호출후 n 의 값은 :" , n)
print("호출 전 n 주소값 : ", id(n))
728x90
반응형

댓글