문제
다음 Python 코드의 실행 결과를 쓰시오.
Pythondef 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로 누적된다.