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

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

문제

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

Python
def process(data, cache={}): if data in cache: cache[data] += 1 else: cache[data] = 1 return cache print(process('hello')) print(process('world')) print(process('hello')) print(process('python', {})) print(process('world'))

정답

{'hello': 1} {'hello': 1, 'world': 1} {'hello': 2, 'world': 1} {'python': 1} {'hello': 2, 'world': 2}

{'hello': 1}{'hello': 1, 'world': 1}{'hello': 2, 'world': 1}{'python': 1}{'hello': 2, 'world': 2}

해설

기본 인자 cache={}는 함수 정의 시 한 번만 생성되어 공유된다. 따라서 첫 세 번과 마지막 호출은 같은 딕셔너리를 사용한다. 네 번째 호출만 새 빈 딕셔너리 {}를 직접 전달하므로 독립적으로 {'python': 1}이 출력된다. 따라서 출력은 각 줄마다 순서대로 {'hello': 1}, {'hello': 1, 'world': 1}, {'hello': 2, 'world': 1}, {'python': 1}, {'hello': 2, 'world': 2}이다.

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

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

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