다음 Python 프로그램의 출력값을 쓰시오.
def make_accumulator():
total = 0
def add(value):
nonlocal total
total += value
return total
return add
a = make_accumulator()
b = make_accumulator()
print(a(2), a(3), b(4), a(-1))모범답안
2 5 4 4
풀이와 판단 근거
make_accumulator를 호출할 때마다 독립적인 total을 가진 클로저가 생성된다. a는 첫 호출에서 2, 두 번째 호출에서 누적 5가 되고, b는 별도 상태이므로 첫 호출 결과가 4이다.
마지막 a(-1)은 a에 저장된 5에서 1을 빼 4를 반환한다. nonlocal은 전역 변수가 아니라 가장 가까운 바깥 함수의 total을 갱신한다.
자주 틀리는 지점
- a와 b가 같은 total을 공유한다고 판단
- nonlocal을 global과 동일하게 해석
- 함수 호출마다 total이 0으로 초기화된다고 판단
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.