문제
다음 Python 코드의 실행 결과를 쓰시오.
Pythondef build_accumulator(initial): total = [initial] def add_value(n): total[0] += n return total[0] return add_value acc = build_accumulator(5) print(acc(3), acc(2), acc(1))
정답
8 10 11
8 10 11
해설
클로저를 이용한 누적기 패턴입니다. build_accumulator 함수는 initial 값(5)으로 시작하는 total 리스트를 생성하고, 내부 함수 add_value가 이 리스트를 참조합니다. acc(3) 호출 시 5+3=8, acc(2) 호출 시 8+2=10, acc(1) 호출 시 10+1=11이 반환됩니다. 클로저의 특성상 외부 함수가 종료된 후에도 total 리스트의 상태가 유지됩니다.