핵심 SET 04 — 정답 및 해설¶
| 문항 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 정답 | ② | ① | ② | ② | ② | ① | ① | ② | ② | ② |
1. 정답 ② 15
함수도 일반 값처럼 다른 함수에 인자로 전달할 수 있습니다. apply(f, 4)는 f(4) + 1을 계산하며, f(4) = 4 + 10 = 14이므로 결과는 15.
2. 정답 ① 6
*nums는 리스트를 풀어서(unpacking) f(1, 2, 3)처럼 각 원소를 개별 인자로 전달합니다. 1+2+3=6.
3. 정답 ② TypeError
인스턴스 메서드를 g.hello()처럼 호출하면 파이썬이 자동으로 g를 첫 번째 인자(self)로 넘깁니다. 그런데 hello는 매개변수가 0개로 정의되어 있어 인자를 받을 자리가 없으므로 TypeError: hello() takes 0 positional arguments but 1 was given이 발생합니다.
4. 정답 ② <class 'int'>
파이썬3의 math.floor/math.ceil은 항상 정수(int)를 반환합니다. 7.5를 내림하면 7이고 그 타입은 int.
5. 정답 ② {'a': 1} 다음 {'a': 1, 'b': 2}
기본값 딕셔너리 d={}는 함수 정의 시 한 번만 생성되어 호출마다 재사용됩니다. 첫 호출로 {'a': 1}이 되고, 두 번째 호출에서 같은 딕셔너리에 'b': 2가 추가되어 {'a': 1, 'b': 2}가 됩니다.
6. 정답 ① [1, 2, 3] [1, 2, 3, 4]
a[:]는 슬라이싱으로 새 리스트를 복사합니다(얕은 복사). b에만 append하므로 원본 a는 영향을 받지 않습니다.
7. 정답 ① 1 [2, 3, 4] 5
*b는 가운데 남는 원소들을 리스트로 모아 받습니다. 첫 원소는 a, 마지막 원소는 c, 나머지 2, 3, 4는 b에 리스트로 들어갑니다.
8. 정답 ② {2, 4}
set 컴프리헨션의 조건 n % 2 == 0을 만족하는 값은 2, 2, 4, 4이지만, set은 중복을 자동으로 제거하므로 결과는 {2, 4}입니다.
9. 정답 ② "abc"
문자열은 불변(immutable) 객체입니다. s.upper()는 새 문자열 "ABC"를 반환할 뿐 s를 직접 바꾸지 않으며, 반환값을 다시 대입하지 않았으므로 s는 그대로 "abc"입니다.
10. 정답 ② AttributeError
import utils는 utils 패키지(즉 __init__.py의 내용)만 실행할 뿐, 그 안의 math_utils 서브모듈을 자동으로 가져오지는 않습니다. __init__.py에서 명시적으로 import하지 않았다면 utils.math_utils는 존재하지 않아 AttributeError가 발생합니다.