문제
다음 Python 코드의 실행 결과를 쓰시오.
Pythondef collect(item, container={}): container[item] = True return container print(collect('a')) print(collect('b')) print(collect('c', {})) print(collect('d'))
정답
{'a': True} {'a': True, 'b': True} {'c': True} {'a': True, 'b': True, 'd': True}
{'a': True}{'a': True, 'b': True}{'c': True}{'a': True, 'b': True, 'd': True}
해설
가변 기본 인자인 딕셔너리 {}는 함수 정의 시 한 번만 생성되어 모든 호출에서 공유됩니다. collect('a') 호출 시 {'a': True}가 되고, collect('b') 호출 시 동일한 딕셔너리에 'b' 키가 추가되어 {'a': True, 'b': True}가 됩니다. collect('c', {}) 호출 시에는 새로운 빈 딕셔너리를 전달하므로 {'c': True}가 됩니다. collect('d') 호출 시에는 다시 공유되는 기본 딕셔너리를 사용하여 {'a': True, 'b': True, 'd': True}가 됩니다.