정보처리기사 실기PythonPython - 가변 기본 인자 함정난이도 1SHORT_ANSWER

정보처리기사 실기 Python - 가변 기본 인자 함정 기출문제 #486

문제

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

Python
def helper(data={}): data['size'] = data.get('size', 0) + 1 return data print(helper()) print(helper()) print(helper({'type': 'new'})) print(helper())

정답

{'size': 1} {'size': 2} {'type': 'new', 'size': 1} {'size': 3}

{'size': 1} {'size': 2} {'type': 'new', 'size': 1} {'size': 3}

해설

가변 기본 인자(딕셔너리)는 함수 정의 시 한 번만 생성되어 모든 호출에서 공유됩니다. 첫 번째 호출에서 data는 빈 딕셔너리이고 'size'가 1로 설정됩니다. 두 번째 호출에서는 같은 딕셔너리 객체를 재사용하므로 'size'가 2가 됩니다. 세 번째 호출에서는 새로운 딕셔너리 {'type': 'new'}를 전달했으므로 기본 인자와 독립적으로 'size'가 1이 됩니다. 네 번째 호출에서는 다시 공유된 기본 인자를 사용하므로 'size'가 3이 됩니다.

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

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