정보처리기사 실기PythonPython - 클로저난이도 3SHORT_ANSWER

정보처리기사 실기 Python - 클로저 기출문제 #1465

문제

다음 Python 코드의 실행 결과를 쓰시오.

Python
def create_multiplier(factor): operations = {'multiply': lambda x: x * factor, 'power': lambda x: x ** factor} def calculate(mode, value): factor += 1 return operations[mode](value) return calculate func = create_multiplier(3) print(func('multiply', 5))

정답

UnboundLocalError

UnboundLocalErrorunboundlocalerrorUnboundLocal ErrorUnbound Local Error

해설

calculate 함수 내부에서 'factor += 1' 구문이 있으면 Python은 factor를 지역 변수로 인식합니다. 하지만 증가 연산 전에 factor의 값을 읽어야 하는데, 아직 지역 변수로서 초기화되지 않았으므로 UnboundLocalError가 발생합니다. 람다 함수들이 외부 스코프의 factor를 참조하더라도, calculate 함수 내에서 factor에 할당 연산이 있으면 해당 함수 스코프에서는 factor가 지역 변수가 되어 접근 전에 오류가 발생합니다.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.