98. 중급 용어 보강
이 부록은 중급편에 등장한 중급 수준의 기술 용어를 한자리에 모아 풀이합니다. 본문 첫 등장 자리에서 이미 설명했지만, 헷갈릴 때 빠르게 찾아볼 수 있도록 정리했습니다.
📌 초급편의 98 기초 용어 사전(JSON·IDE·venv 등 범용 용어)과 99 부록 용어집(초급 학습 개념)도 함께 참고하세요. 이 사전은 그 위층, 중급 개념을 다룹니다.
🏗️ 객체 지향 (OOP)
| 용어 | 한 줄 풀이 | 처음 등장 |
|---|---|---|
| OOP | Object-Oriented Programming. 관련 데이터와 동작을 객체로 묶는 프로그래밍 방식. | 11장 |
| 클래스(class) | 객체를 찍어내는 설계도(붕어빵 틀). | 11장 |
| 객체/인스턴스 | 클래스로 만든 실체(찍어낸 붕어빵). | 11장 |
self | 메서드를 호출한 객체 자신. obj.method()의 obj가 self로 들어감. | 11장 |
| 속성(attribute) | 객체가 가진 데이터(self.name). 인스턴스 변수라고도 함. | 11장 |
| 메서드(method) | 클래스 안에 정의된, 객체의 동작을 나타내는 함수. | 11장 |
__init__ | 객체 생성 시 자동 호출되는 초기화 메서드. | 11장 |
| 클래스 변수 | 모든 객체가 공유하는 변수(클래스 본문에 직접 정의). | 11장 |
| 상속(inheritance) | 부모 클래스의 기능을 자식이 물려받는 것. | 12장 |
| 오버라이드(override) | 자식이 부모와 같은 이름의 메서드를 다시 정의하는 것. | 12장 |
super() | 부모 클래스를 가리키는 말. 부모 메서드를 재사용할 때. | 12장 |
| 매직/던더 메서드 | __str__·__eq__처럼 밑줄 둘로 감싸인, Python이 자동 호출하는 특별 메서드. | 11·12장 |
| 캡슐화(encapsulation) | 데이터를 메서드 뒤로 감싸 안전하게 다루는 것. _이름은 "내부용" 신호. | 12장 |
@classmethod | 객체가 아닌 클래스 자체와 관련된 메서드. 첫 인자로 cls(클래스)를 받음. | 20장 |
🔁 컴프리헨션과 이터레이션
| 용어 | 한 줄 풀이 | 처음 등장 |
|---|---|---|
| 컴프리헨션 | 반복+생성을 한 줄로 쓰는 표현([식 for x in 반복]). | 13장 |
| 이터러블(iterable) | for로 돌 수 있는 것(리스트·문자열·딕셔너리 등). | 14장 |
| 이터레이터(iterator) | 값을 하나씩 꺼내주는 장치. next()로 다음 값을 얻음. | 14장 |
StopIteration | 이터레이터에 더 꺼낼 값이 없을 때 나는 예외(반복의 끝 신호). | 14장 |
| 제너레이터(generator) | yield로 값을 하나씩 만들어내는 함수. 메모리 효율적. | 14장 |
yield | 값을 내놓고 그 자리에서 멈췄다 다음 호출 때 이어 달리는 키워드. | 14장 |
| 지연 평가(lazy) | 값을 미리 다 만들지 않고 필요할 때 하나씩 만드는 방식. | 14장 |
🧩 함수와 타입
| 용어 | 한 줄 풀이 | 처음 등장 |
|---|---|---|
| 일급 함수 | 함수를 값처럼 다루는 성질(변수에 담고·넘기고·반환). | 17장 |
| 콜백(callback) | 다른 함수에 인자로 넘겨, 나중에 호출되게 하는 함수. | 17장 |
| 클로저(closure) | 안쪽 함수가 바깥 변수를 기억한 채 반환되는 현상. | 17장 |
nonlocal | 클로저 안에서 바깥 함수의 변수를 수정하겠다는 선언. | 17장 |
| 데코레이터(decorator) | 함수를 감싸 원래 코드를 건드리지 않고 기능을 더하는 도구. @로 적용. | 17장 |
functools.wraps | 데코레이터가 원래 함수의 이름·문서를 보존하게 해주는 도구. | 17장 |
| 타입 힌트 | 인자: 타입, -> 반환타입으로 타입을 표시하는 것. 강제는 아님. | 18장 |
| 동적 타이핑 | 변수 타입을 실행 중에 그때그때 정하는 Python의 방식. | 18장 |
| 점진적 타이핑 | 원하는 곳에만 타입 힌트를 붙일 수 있는 방식. | 18장 |
📦 모듈·파일·도구
| 용어 | 한 줄 풀이 | 처음 등장 |
|---|---|---|
| 모듈(module) | 함수·클래스를 담은 하나의 .py 파일. | 15장 |
| 패키지(package) | 모듈들을 담은 폴더(__init__.py로 표시). | 15장 |
| 네임스페이스 | 이름이 사는 공간. 모듈.이름으로 충돌을 피함. | 15장 |
if __name__ == "__main__" | 파일을 직접 실행할 때만 도는 코드를 구분하는 관용구. | 15장 |
with 구문 | 파일 등 자원을 자동으로 닫아주는 구문. | 16장 |
| 영속성(persistence) | 프로그램이 꺼져도 데이터가 파일에 남는 성질. | 16장 |
| 가상환경 | 프로젝트별 격리된 Python·라이브러리 공간(venv). | 19장 |
| uv | venv·pip를 통합한 빠른 현대 패키지·환경 도구(2026). | 19장 |
| 포매터(formatter) | 코드를 스타일 규칙에 맞게 자동 정리하는 도구(Ruff 등). | 19장 |
| 린터(linter) | 코드의 문제·스타일 위반을 찾아주는 도구. | 19장 |
| Ruff | 포매팅·린팅을 한 번에 하는 빠른 도구(2026 표준). | 19장 |
| 테스트(test) | 코드가 의도대로 동작하는지 자동 검증하는 코드. | 19장 |
| pytest | 가장 널리 쓰이는 테스트 도구. test_ 함수를 자동 실행. | 19장 |
⚠️ 중급 단골 실수 모음
| 실수 | 올바른 방법 |
|---|---|
메서드 정의에서 self 빠뜨림 | 모든 메서드 첫 인자는 self |
객체 속성을 self. 없이 접근 | 항상 self.name처럼 |
if의 두 위치 혼동(컴프리헨션) | 거르기는 뒤 if, 변환은 앞 if...else |
| 제너레이터를 두 번 순회 | 일회용! 다시 쓰려면 list()로 받기 |
데코레이터에서 결과 return 누락 | wrapper도 func() 결과를 반환 |
@functools.wraps 누락 | 원래 함수 이름 보존 위해 붙이기 |
| 타입 힌트가 강제될 거라 기대 | 힌트는 표시일 뿐, 검사는 도구가 |
CSV 쓸 때 newline="" 누락 | 빈 줄 방지 위해 꼭 넣기 |
파일 with 없이 열고 안 닫음 | 항상 with open(...) as f: |
| 새 프로젝트에 가상환경 안 만듦 | 시작 시 venv/uv부터 |
🏠 목차로 돌아가기 | ▶️ 99. 중급 치트시트와 다음 단계