문제
다음 Python 코드의 실행 결과를 쓰시오.
Pythondef build_multiplier(factor): value = [factor] def multiply(num): value[0] *= num return value[0] return multiply func = build_multiplier(3) print(func(2), func(4), func(5))
정답
6 24 120
6 24 1206, 24, 120
해설
build_multiplier 함수는 클로저를 반환한다. 내부 함수 multiply는 외부 함수의 value 리스트를 캡처하여 상태를 유지한다. 초기값 3에서 시작하여: 첫 번째 호출 func(2)에서 32=6, 두 번째 호출 func(4)에서 64=24, 세 번째 호출 func(5)에서 24*5=120이 된다. 클로저의 특성으로 value[0]의 상태가 호출 간에 유지되어 누적 곱셈이 수행된다.