더북(TheBook)

#2에서 *x를 역참조(dereference)라고 하며 x에 저장된 주소 값인 0x1111 1111로 접근합니다. 이렇게 접근하여 value를 대입하면 main() 함수의 지역 변수 x가 있는 메모리 공간에 value 값을 대입할 수 있습니다. 그림 5-7에서 main 스택 프레임의 x를 보면 값이 10에서 20으로 변경된 것을 확인할 수 있습니다. change_value() 함수의 호출이 끝나면 change_value 스택 프레임은 사라집니다. change_value() 함수의 호출을 완료한 다음에 스택 프레임이 어떻게 바뀌는지 보면 그림 5-8과 같습니다.

071_2

그림 5-8 change_value 실행 종료 후의 스택 프레임(call by reference)


이제 x 값을 출력하면 20이 출력됩니다. 함수에 참조를 인자로 전달함으로써 main() 함수 스택 프레임의 지역 변수 x 값을 잘 변경할 수 있었습니다.

지금까지는 C/C++ 같은 일반적인 언어에서 인자를 전달하는 두 가지 방식을 알아보았습니다. 파이썬은 함수에 인자를 전달할 때 값에 의한 전달 방식이나 참조에 의한 전달 방식을 사용하지 않고 ‘객체 참조에 의한 전달’ 방식을 사용합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.