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

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

문제

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

Python
def process(item, container={}): container[item] = len(container) + 1 return container print(process('a')) print(process('b')) print(process('c', {})) print(process('d'))

정답

{'a': 1} {'a': 1, 'b': 2} {'c': 1} {'a': 1, 'b': 2, 'd': 3}

{'a': 1}{'a': 1, 'b': 2}{'c': 1}{'a': 1, 'b': 2, 'd': 3}

해설

가변 기본 인자인 딕셔너리는 함수 정의 시 한 번만 생성되어 모든 호출에서 공유된다. 첫 번째 호출에서 {'a': 1}이 생성되고, 두 번째 호출에서 같은 딕셔너리에 'b': 2가 추가되어 {'a': 1, 'b': 2}가 된다. 세 번째 호출은 새로운 빈 딕셔너리를 전달했으므로 {'c': 1}이 반환된다. 네 번째 호출은 다시 기본 인자를 사용하므로 기존 딕셔너리에 'd': 3이 추가되어 {'a': 1, 'b': 2, 'd': 3}이 반환된다.

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

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