문제
다음 Python 코드의 실행 결과를 쓰시오.
Pythondef 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가 지역 변수가 되어 접근 전에 오류가 발생합니다.