더북(TheBook)

#2에서 change_value() 함수를 호출하면서 인자로 #1의 x를 전달합니다. 이때 change_value 스택 프레임이 생성되면서 #3의 인자 x는 함수를 호출한 영역에 있는 #1의 x를 참조합니다.

#4를 실행하기 전에 스택 프레임이 어떤 모습인지 그림을 통해 살펴보겠습니다.

072

그림 5-9 call by object reference 스택 프레임 ①


주목할 점은 파이썬의 변수는 C 언어처럼 변수라는 메모리 공간에 값을 직접 저장하지 않는다는 것입니다. 변수 이름이 값 객체를 가리키는 것을 볼 수 있습니다.

그림 5-9까지만 보면 파이썬 역시 참조에 의한 전달 방식을 쓰는 것처럼 보이지만 출력 결과를 보면 아니라는 것을 알 수 있습니다. 함수 스택 프레임 안에서는 x 값이 변경되었지만, 함수를 호출한 쪽에서는 x 값이 변경되지 않았습니다.

그림 5-10은 #4를 실행한 다음의 모습입니다.

073

그림 5-10 call by object reference 스택 프레임 ②

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