99. 고급 치트시트와 다음 단계
고급편을 완주하신 것을 진심으로 축하합니다! 🎉 이 부록은 빠르게 찾아볼 치트시트와 다음 학습 단계 안내입니다.
📋 고급 문법 빠른 참조
정규표현식 (21장)
PYTHON
import re re.search(r"\d+", s) # 처음 매칭 (Match 또는 None) re.findall(r"\d+", s) # 모든 매칭 → 리스트 re.sub(r"\d", "*", s) # 치환 re.split(r"[,;]", s) # 분리 m = re.search(r"(\d{4})-(\d{2})", s) m.group(1) # 그룹 추출 re.compile(r"...") # 재사용 # 기호: \d 숫자 \w 단어 \s 공백 . 아무거나 # * 0+ + 1+ ? 0~1 {n,m} 범위 # ^ 시작 $ 끝 .+? 게으름
로깅 (22장)
PYTHON
import logging logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s", filename="app.log") logging.info("정보"); logging.warning("경고") logging.exception("에러") # except 블록에서 (트레이스백 포함) logger = logging.getLogger(__name__) # 로거 객체 # 레벨: DEBUG < INFO < WARNING < ERROR < CRITICAL
날짜와 시간 (23장)
PYTHON
from datetime import date, datetime, timedelta date.today(); datetime.now() d + timedelta(days=7) # 미래 (d2 - d1).days # 차이 dt.strftime("%Y-%m-%d") # 날짜 → 문자열 datetime.strptime(s, "%Y-%m-%d")# 문자열 → 날짜 from zoneinfo import ZoneInfo dt.astimezone(ZoneInfo("Asia/Seoul")) import time start = time.perf_counter(); ...; time.perf_counter() - start
동시성 (24·25장)
PYTHON
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor with ThreadPoolExecutor(max_workers=5) as ex: # I/O 바운드 results = list(ex.map(func, items)) with ProcessPoolExecutor() as ex: # CPU 바운드 results = list(ex.map(func, items)) import asyncio async def task(): await asyncio.sleep(1) async def main(): await asyncio.gather(task(), task()) # 동시 실행 asyncio.run(main()) # 규칙: I/O→스레드/async, CPU→프로세스, GIL 주의
자료구조 (26·27장)
PYTHON
# 스택 (LIFO) stack = []; stack.append(x); stack.pop() # 큐 (FIFO) from collections import deque q = deque(); q.append(x); q.popleft() # 이진 탐색 import bisect; bisect.bisect_left(sorted_list, x) # 빈도/기본값 from collections import Counter, defaultdict Counter(items); defaultdict(int) # 복잡도: O(1) dict/set 조회 < O(log n) 이진탐색 # < O(n) 리스트 검색 < O(n²) 이중루프
🗺️ 고급편 전체 흐름
flowchart TD
A[21·22 텍스트 처리<br/>정규식·로깅]:::a
B[23 시간<br/>datetime]:::b
C[24·25 동시성<br/>스레드·async]:::c
D[26·27 자료구조<br/>복잡도·트리]:::d
E[28 미니 프로젝트<br/>로그 분석기]:::e
A --> B --> C --> D --> E
classDef a fill:#fde2e2,stroke:#d64545,color:#7a1f1f
classDef b fill:#fff3b0,stroke:#e0a800,color:#5c4500
classDef c fill:#d4edda,stroke:#34a853,color:#14532d
classDef d fill:#cfe8ee,stroke:#2a9d8f,color:#14532d
classDef e fill:#e8d5f0,stroke:#8e44ad,color:#4a235a
🎓 세 권을 모두 마친 당신에게
초급·중급·고급편을 완주했다면, 이제 Python의 핵심을 두루 익힌 셈입니다.
| 권 | 무엇을 얻었나 |
|---|---|
| 초급편 | 문법·자료구조·제어 흐름·함수 — 프로그래밍의 뼈대 |
| 중급편 | OOP·이터레이션·모듈·데코레이터·도구 — 구조 있는 코드 |
| 고급편 | 정규식·로깅·시간·동시성·자료구조 — 실무 핵심 주제 |
이제 "문법을 배우는 단계"는 지났습니다. 다음은 만들고 싶은 것을 만드는 단계입니다.
🚀 다음 단계: 분야별 길
| 분야 | 배우면 좋은 것 | 커리큘럼 연계 |
|---|---|---|
| 웹 개발 | Flask·FastAPI·Django, HTTP, 템플릿, 폼 처리 | 첨부 커리큘럼의 Flask 섹션 |
| 데이터베이스 | SQL, SQLite, ORM, 트랜잭션 | 커리큘럼의 SQLite·DB 섹션 |
| 웹 스크래핑 | requests, BeautifulSoup, Selenium | 커리큘럼의 스크래핑 섹션 |
| 데이터·AI | pandas, NumPy, 시각화, 머신러닝 | — |
| 테스트·품질 | 고급 pytest, 커버리지, CI | — |
| 패키징·배포 | 패키지 만들기, PyPI 배포, Docker | — |
💡 팁
첨부된 강좌 커리큘럼에는 이 책에서 다루지 않은 Flask 웹 개발, SQLite 데이터베이스, BeautifulSoup·Selenium 스크래핑, GUI(Tkinter)까지 담겨 있습니다. 고급편으로 다진 기초 위에 관심 분야를 골라 깊이 파보세요.실력을 굳히는 프로젝트 아이디어
세 권에서 배운 것을 총동원하는 프로젝트들입니다.
- 웹 로그 모니터링 도구: 실시간 로그를 정규식 파싱(21장) + 비동기 수집(25장) + 통계(26장)
- API 데이터 수집기: async로 여러 API 동시 호출(25장) + JSON 저장(중급 16장) + 스케줄링(23장)
- 간단한 검색 엔진: 텍스트를 트리/딕셔너리로 색인(27장) + 정규식 토큰화(21장)
- 작업 큐 시스템: deque로 작업 관리(26장) + 스레드 풀로 처리(24장) + 로깅(22장)
- 개인 가계부/일정 관리 웹앱: Flask(다음 단계) + DB + 이 책의 모든 것
더 나아가기 위한 습관
- ✅ 읽기: 잘 만든 오픈소스 코드를 읽으세요. 표준 라이브러리 소스도 좋은 교재입니다.
- ✅ 만들기: 작더라도 끝까지 완성하는 프로젝트를 쌓으세요.
- ✅ 측정하기: 느리면
perf_counter로 재고, 복잡도를 따져 개선하세요. - ✅ 테스트하기: 중요한 코드엔 pytest 테스트를(중급 19장).
- ✅ 공식 문서: docs.python.org는 평생의 동반자입니다.
📚 더 공부할 자료
- 공식 문서: docs.python.org/ko — 표준 라이브러리 레퍼런스.
- 공식 HOWTO: 정규식·로깅·동시성 등 주제별 심화 가이드가 공식 문서에 있습니다.
- PEP: 관심 가는 기능의 PEP를 읽으면 "왜 그렇게 설계됐는지" 이해가 깊어집니다.
◀️ 이전: 98. 고급 용어 보강 | 🏠 목차로 돌아가기
세 권의 여정을 모두 마치셨습니다. 이제 당신은 Python으로 무엇이든 만들 수 있는 토대를 갖췄습니다. 배움은 여기서 끝이 아니라, 진짜 시작입니다. 직접 만들고, 막히고, 찾아보고, 고치며 계속 성장하세요. 🐍🚀
수고하셨습니다!