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

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

문제

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

Python
def store(name, items={}): items[name] = len(name) return items print(store('cat')) print(store('dog')) print(store('bird', {})) print(store('fish'))

정답

{'cat': 3} {'cat': 3, 'dog': 3} {'bird': 4} {'cat': 3, 'dog': 3, 'fish': 4}

{'cat': 3}{'cat': 3, 'dog': 3}{'bird': 4}{'cat': 3, 'dog': 3, 'fish': 4}

해설

기본 인자로 사용된 딕셔너리 {}는 함수 정의 시 한 번만 생성되어 모든 호출에서 공유됩니다. 첫 번째 호출에서 {'cat': 3}이 생성되고, 두 번째 호출에서는 같은 딕셔너리에 'dog': 3이 추가되어 {'cat': 3, 'dog': 3}이 됩니다. 세 번째 호출은 새로운 딕셔너리 {}를 전달했으므로 독립적으로 {'bird': 4}가 됩니다. 네 번째 호출은 다시 공유 딕셔너리를 사용하여 'fish': 4가 추가됩니다.

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

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

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