문제
다음 Python 코드의 실행 결과를 쓰시오.
Pythondef helper(data={}): data['size'] = data.get('size', 0) + 1 return data print(helper()) print(helper()) print(helper({'type': 'new'})) print(helper())
정답
{'size': 1} {'size': 2} {'type': 'new', 'size': 1} {'size': 3}
{'size': 1}
{'size': 2}
{'type': 'new', 'size': 1}
{'size': 3}
해설
가변 기본 인자(딕셔너리)는 함수 정의 시 한 번만 생성되어 모든 호출에서 공유됩니다. 첫 번째 호출에서 data는 빈 딕셔너리이고 'size'가 1로 설정됩니다. 두 번째 호출에서는 같은 딕셔너리 객체를 재사용하므로 'size'가 2가 됩니다. 세 번째 호출에서는 새로운 딕셔너리 {'type': 'new'}를 전달했으므로 기본 인자와 독립적으로 'size'가 1이 됩니다. 네 번째 호출에서는 다시 공유된 기본 인자를 사용하므로 'size'가 3이 됩니다.