문제
다음 Python 코드의 실행 결과를 쓰시오.
Pythondef 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}이 반환된다.