이번에는 함수 안에서 리스트 li에 새로운 리스트를 통째로 할당하였습니다(#1). 그런데 실행 결과를 보면 이번에는 리스트가 변경되지 않았습니다. 대체 어떻게 된 일일까요?

    코드 5-10과 코드 5-11을 보면 한 가지 차이점을 발견할 수 있습니다.

    코드 5-10: 참조한 리스트에 접근해 변경을 시도

    코드 5-11: 아예 다른 리스트를 메모리 공간에 새로 만든 다음 이를 참조해 리스트를 변경

    두 예제 코드의 차이점을 그림으로 비교해 보겠습니다. 먼저 코드 5-10에서 #1을 실행한 다음의 모습입니다(그림 5-12).

    076

    그림 5-12 call_by_obj_ref2.py 스택 프레임


    func 스택 프레임의 limain 스택 프레임의 li가 모두 같은 메모리 공간을 참조합니다.

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