안녕하세요. 스마트팩토리입니다.
파이썬 초급 #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))
'Python' 카테고리의 다른 글
파이썬 중급 #051 리스트 -list ,append() (0) | 2022.04.20 |
---|---|
파이썬 초급 #050 함수 - 참조값에 의한 인수 전달-문자열(string)(call by value) (0) | 2022.04.15 |
파이썬 초급 #048 함수 - 여러개 값 변환하기 (0) | 2022.03.03 |
파이썬 초급 #047 함수 - 함수 모듈 호출 및 적용(2) import 함수파일명, from 함수파일명 import 함수명 (0) | 2022.02.27 |
파이썬 초급 #046 함수 - 사칙연산 함수 모듈 호출 및 적용 (import, from 파일명 import*) (0) | 2022.02.26 |
댓글