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

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

문제

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

Python
def transform(data, target={}): key = len(data) if key in target: target[key].append(data) else: target[key] = [data] return target print(transform('ab')) print(transform('xyz')) print(transform('w', {})) print(transform('mn'))

정답

{2: ['ab']} {2: ['ab'], 3: ['xyz']} {1: ['w']} {2: ['ab', 'mn'], 3: ['xyz']}

{2: ['ab']} {2: ['ab'], 3: ['xyz']} {1: ['w']} {2: ['ab', 'mn'], 3: ['xyz']}

해설

가변 기본 인자 함정 문제입니다. target={} 기본 인자는 함수 정의 시 한 번만 생성되어 호출 간 공유됩니다. 첫 번째 호출에서 길이 2인 'ab'가 {2: ['ab']}를 만들고, 두 번째 호출에서 길이 3인 'xyz'가 추가되어 {2: ['ab'], 3: ['xyz']}가 됩니다. 세 번째 호출은 새로운 딕셔너리를 전달했으므로 독립적으로 {1: ['w']}를 반환합니다. 네 번째 호출은 다시 공유된 기본 딕셔너리를 사용하여 길이 2인 'mn'이 기존 키 2에 추가됩니다.

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

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