콘텐츠로 이동

핵심 SET 02 — 정답 및 해설

문항 1 2 3 4 5 6 7 8 9 10
정답

1. 정답 ① 5 함수의 매개변수 x지역변수로, 전역의 x와는 별개의 객체입니다. foo 안에서 x = x + 1은 지역변수 x만 바꿀 뿐 전역 x에는 영향을 주지 않습니다.

2. 정답 ③ 5 *args(1, 2, 3)으로 길이 3, **kwargs{"a": 1, "b": 2}로 길이 2. 3 + 2 = 5.

3. 정답 ② False True ==는 기본적으로 객체의 정체성(메모리상 동일 여부)을 비교합니다(별도로 __eq__를 정의하지 않았다면). p1p2는 다른 객체이므로 p1 == p2False. 반면 p1.x == p2.x는 둘 다 5라는 값을 비교하므로 True.

4. 정답 ② 5만 출력 if __name__ == "__main__": 블록은 모듈을 직접 실행할 때만 실행되고, import로 가져올 때는 __name__"calc"가 되어 실행되지 않습니다. 하지만 print(add(2, 3))if 블록 밖에 있으므로 import 시에도 항상 실행되어 5가 출력됩니다.

5. 정답 ② TypeError 딕셔너리의 키는 해시 가능(hashable)해야 합니다. 리스트는 가변 객체라 해시할 수 없으므로 키로 사용하면 TypeError: unhashable type: 'list'가 발생합니다.

6. 정답 ② [1, 2, [3, 4]] [1, 2, 3, 4] append는 인자를 하나의 원소로 그대로 추가하므로 [3, 4]라는 리스트 자체가 통째로 들어갑니다. extend는 인자의 각 원소를 풀어서 추가하므로 34가 따로 들어갑니다.

7. 정답 ③ <class 'int'> 다음 <class 'tuple'> (5)는 괄호가 그냥 수식의 우선순위 괄호일 뿐이라 int입니다. 튜플을 만들려면 쉼표가 필요하므로 (5,)tuple이 됩니다.

8. 정답 ② <class 'dict'> {}빈 딕셔너리를 만듭니다. 빈 집합(set)을 만들려면 set()을 명시적으로 호출해야 합니다.

9. 정답 ③ 80 100 r.energy = 80Robot 인스턴스 r새로운 인스턴스 속성을 만들어 클래스 속성을 가립니다(shadowing). 클래스 속성 Robot.energy는 그대로 100으로 남습니다.

10. 정답 ② utils 폴더에 __init__.py가 있어야 파이썬이 패키지로 인식한다 __init__.py는 내용이 비어 있어도 되며, 이 파일이 있어야 폴더가 패키지로 인식됩니다. string_utils.py는 패키지가 아니라 패키지 안의 모듈입니다.