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

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

문제

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

Python
def build_container(data, container={}): for key, value in data.items(): if key in container: container[key] += value else: container[key] = value return container print(build_container({'x': 10, 'y': 20})) print(build_container({'x': 5, 'z': 15})) print(build_container({'w': 30}, {})) print(build_container({'x': 3}))

정답

{'x': 10, 'y': 20} {'x': 15, 'y': 20, 'z': 15} {'w': 30} {'x': 18, 'y': 20, 'z': 15}

{'x': 10, 'y': 20}{'x': 15, 'y': 20, 'z': 15}{'w': 30}{'x': 18, 'y': 20, 'z': 15}

해설

가변 기본 인자 딕셔너리는 함수 정의 시 한 번만 생성되어 모든 호출에서 공유된다. 첫 번째 호출에서 {'x': 10, 'y': 20}이 저장되고, 두 번째 호출에서는 기존 딕셔너리에 x는 10+5=15로 누적되고 z는 새로 추가된다. 세 번째 호출은 새로운 빈 딕셔너리를 전달하므로 독립적으로 {'w': 30}이 된다. 네 번째 호출에서는 다시 공유 딕셔너리를 사용하여 x가 15+3=18로 누적된다.

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

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

[정보처리기사 실기] Python - 가변 기본 인자 함정 Python 기출 #3146 | sqldpass