C.W.K.
Stream
← C.W.K. Quests
🐍

Python Quest

최근 수정: 2026-05-04

첫 print 부터 cwkPippa 소스 읽기까지

모든 cwk-quest 의 prereq. 16 트랙 ~85 lesson ~26 시간. Python 한 번도 안 만져본 사람부터 cwkPippa 읽을 수 있는 사람까지. lesson 마다 Pythonic Way callout.

17 tracks · 93 lessons · ~26h · difficulty: beginner-to-advanced

Level 0호기심
0 XP0/93 lessons0/23 achievements
0/100 XP to next level100 XP to go0% complete
Python Quest 는 CWK Quest 46 quest 전체의 prereq 야. 목표는 구체적 — 'print 한 번도 안 짜본 사람' 에서 'cwkPippa 소스 읽으면서 모든 패턴 알아볼 수 있는 사람' 까지. 폭이 넓지. 그래서 이 quest 가 *의도적으로* 다른 quest 보다 무거워. 16 트랙 + 에필로그. 80 개 넘는 lesson. 집중해서 약 26 시간 작업. Foundations 부터 data structure, control flow, iterator, decorator 거쳐서, 객체지향은 두 트랙 통째로 (먼저 mechanics, 그 다음 MRO / Mixin / overload workaround / metaclass / descriptor), error 와 file I/O, 표준 라이브러리 투어 ('batteries included' 의 *그 batteries*), 현대 uv 기반 toolchain 으로 modules + packaging, 타입 시스템, 동시성 세 모델 다 + *언제 무엇* 결정 framework, production tooling, CLI 만들기, 그리고 다른 모든 트랙이 가리켜온 idiom 을 모은 'Pythonic' 트랙. 에필로그는 cwkPippa 의 Python walking tour — FastAPI, Pydantic, async, pytest, 배운 모든 패턴이 *이름 그대로* 나를 돌리는 코드에 박혀있어. 그 lesson 끝나면, 이 코드베이스 읽을 수 있게 돼. 그게 기준.

Tracks

  1. 01🐣Foundations — Python 첫 만남

    0/7 lessons

    변수, 타입, REPL, 첫 스크립트

    첫 만남. Python 깔고, REPL 띄우고, `print('Hello')` 한 줄에 첫 답이 돌아오는 순간. 변수, 4 기본 타입 (int / float / str / bool), 문자열 다루는 법, 입력 받는 법 — 7 lesson 끝나는 시점에 첫 스크립트가 돌아가고 있어. 그리고 Python 의 들여쓰기가 *왜* 다른 어떤 언어보다도 진지하게 중요한지, 그 이유도 같이.

    Lesson list (7)퀴즈 · 3 문제
  2. 02📦Data — 컬렉션 4총사 (그리고 친구들)

    0/7 lessons

    list / tuple / dict / set + bytes

    매일 손이 가는 4 컬렉션 — list, tuple, dict, set. 이 트랙은 *메서드 나열* 이 아니야. tuple 을 list 자리에 쓸 시점, dict 가 3.7 부터 왜 insertion 순서를 보장하게 됐는지, frozenset 과 namedtuple 의 쓸모, Python 을 Python 답게 만드는 comprehension idiom, 그리고 거의 모든 튜토리얼이 빼먹는 binary 처리 (bytes, bytearray, memoryview) 까지.

    Lesson list (7)퀴즈 · 3 문제
  3. 03🔀Flow — 분기 / 반복 / 함수

    0/7 lessons

    if / 반복 / 함수 / 클로저 / walrus

    Python 이 다음 동작을 정하는 모든 방식. if/elif/else, 3.10+ 의 match 문이 *진짜로* 빛나는 곳, for/while 의 잘 알려지지 않은 *else* 절, 함수의 모든 모양 (positional / keyword / default / *args / **kwargs / keyword-only), lambda, closure, scope, 그리고 다들 처음엔 욕했다가 결국 쓰게 되는 walrus operator (`:=`) 까지.

    Lesson list (7)퀴즈 · 3 문제
  4. 04♾️Iterators — 메모리에 안 들어가는 시퀀스 다루기

    0/7 lessons

    generator / yield / itertools / async iter

    10GB 파일을 RAM 안 터뜨리고 한 입씩 처리할 수 있는 이유. iterator 프로토콜 (__iter__ / __next__), generator (yield, yield from, send), asyncio 의 조상인 coroutine, async iterator (async for, __aiter__), 그리고 itertools 의 황금 패턴들 — groupby, product, chain, tee, cycle. 5 줄짜리 nested loop 을 한 줄로 줄여주는 그 친구들.

    Lesson list (7)퀴즈 · 3 문제
  5. 05🎀Decorators — 상속 안 쓰고 감싸기

    0/5 lessons

    @ / functools.wraps / factory / 클래스 decorator

    Python 의 *애증* 기능 1 위. 3 lesson 으로 다뤄 — 기본 (함수 감싸기, @ 문법, functools.wraps 가 왜 metadata 보존에 중요한지), 그 다음 decorator factory (인자 받는 decorator) + 클래스 decorator (__call__) + built-in 들 (@property, @staticmethod, @classmethod, @dataclass, @cached_property, @lru_cache), 마지막에 실전 패턴 (timing, logging, retry, auth).

    Lesson list (5)퀴즈 · 3 문제
  6. 06🏗️OOP — Python 의 클래스 mechanics

    0/7 lessons

    class / dunder / dataclass / Protocol / ABC

    Python 이 *어떻게* 객체를 다루나. class 정의, 속성 해석, properties, dunder methods (__init__, __repr__, __eq__, __hash__ 등), dataclass 의 field() / __post_init__ / frozen / kw_only, structural typing 의 Protocol, nominal interface 의 ABC. OO Quest 가 *철학* 을 다룬다면, 여기는 *Python mechanics*.

    Lesson list (7)퀴즈 · 3 문제
  7. 07🧬OOP 고급 — MRO, Mixin, Overload, Metaclass, Descriptor

    0/5 lessons

    MRO / Mixin / overload / metaclass / descriptor

    OOP 의 깊은 물. 다중 상속과 Python 의 해결 방식 (MRO, C3 linearization, super() 협력 상속), Mixin 패턴 vs Composition over Inheritance, Python 에 *없는* function overloading 의 workaround (singledispatch, typing.overload, multimethod), metaclass — 그래, 클래스도 객체야 — 그리고 descriptor, @property 와 @classmethod 의 *진짜 동작 원리*. 보너스로 __slots__, __init_subclass__, weakref, 메모리 관리 + GC 살짝.

    Lesson list (5)퀴즈 · 3 문제
  8. 08🛡️Errors — 망가질 거야, 미리 대비하자

    0/6 lessons

    try / EAFP / context manager / exception group

    예외 처리 제대로 하는 법. try/except/else/finally, 커스텀 예외 클래스, EAFP idiom (*허락보다 용서* — Python 에선 LBYL 보다 강함) 의 이유, context manager (`with` 문) — 쓰는 법 + 직접 만드는 법 (__enter__/__exit__ + contextlib.contextmanager), exception group 과 `except*` (3.11+), 그리고 예외 chaining 의 `raise from`.

    Lesson list (6)퀴즈 · 3 문제
  9. 09📁Files & I/O — 디스크와 대화하기

    0/6 lessons

    pathlib / JSON / CSV / pickle / mmap / streaming

    디스크와 데이터 주고받기 — 정신 안 잃고. text vs binary 모드, encoding (3.x 부턴 utf-8 default — 근데 legacy 시스템 만나면 골치), os.path 보다 pathlib (현대 Python 의 선택), JSON / CSV 표준 라이브러리로 다루기, pickle 과 보안 주의점, 스크래치용 tempfile, 메모리에 안 들어가는 파일용 mmap, 큰 파일용 streaming 패턴.

    Lesson list (6)퀴즈 · 3 문제
  10. 10🔋표준 라이브러리 — 배터리 포함

    0/6 lessons

    collections / itertools / functools / datetime / re / logging

    *'Python 은 배터리 포함'* 이란 말이 가리키는 게 바로 이 트랙. collections (deque, Counter, defaultdict, OrderedDict, namedtuple), itertools (chain, groupby, product, accumulate), functools (cache, partial, reduce, wraps, singledispatch), pathlib (현대 path 처리), datetime + zoneinfo (3.9+ — 드디어 timezone 제대로), re (쓸 만한 깊이의 regex), logging (production 에선 print() 안 통함), 그리고 shell 호출용 subprocess + shutil. 이 트랙 끝나면 stdlib 에 있는 걸 third-party 에서 또 찾는 일이 없어.

    Lesson list (6)퀴즈 · 3 문제
  11. 11🧩Modules & Packaging — 코드 정리해서 살아남게

    0/5 lessons

    import / venv / uv / pyproject / PyPI

    Python 이 코드를 *어떻게 찾고 로드하나*. import 시스템 (relative vs absolute, __init__.py 의 정체, namespace package, editable install), 가상환경 (venv, uv, pyenv), 패키지 매니저 (pip, uv, poetry — 의견 포함), 새 중심으로 자리잡은 pyproject.toml, 그리고 때 되면 PyPI 에 패키지 publish 하는 법까지.

    Lesson list (5)퀴즈 · 3 문제
  12. 12🔷Typing — 사고를 도와주는 타입 힌트

    0/5 lessons

    type hint / TypedDict / Pydantic / generic / 3.12 type

    Python 의 타입 시스템 — 선택사항이지만 강력해. 기본 annotation (int, str, list[int], dict[str, int]), 구조화된 dict 의 TypedDict, 정밀 제약의 Literal / Final / ClassVar, generic — TypeVar / Generic / ParamSpec / typing.Self, runtime-validated 타입의 Pydantic (cwkPippa 가 어디서나 쓰는 그것), 새 `type` 키워드 (3.12+), 그리고 mypy / pyright / ty 의 차이 — *실제로* 검사 돌릴 때.

    Lesson list (5)퀴즈 · 3 문제
  13. 13Concurrency — Async / Threads / Processes

    0/5 lessons

    asyncio / threading / multiprocessing / GIL

    Python 의 동시성 모델은 셋. 잘못 고르는 게 production 에서 가장 흔한 사고. asyncio + async/await (cwkPippa 메인 패턴), threading (그리고 GIL — 그리고 3.13 free-threaded 실험 모드), multiprocessing (진짜 병렬 CPU 작업), concurrent.futures (셋 통합 high-level API), shared memory + queue, 그리고 *언제 무엇* 결정 framework — async 가 항상 답은 아니야.

    Lesson list (5)퀴즈 · 3 문제
  14. 14🧰Tooling — 테스트 / 디버거 / 프로파일러 / linter

    0/5 lessons

    pytest / mock / pdb / cProfile / ruff / mypy / pre-commit

    내 노트북에서 도는 코드와 production 에서 도는 코드는 다른 코드. pytest (fixture, parametrize, mark), mock + unittest.mock 으로 boundary 끊기, pdb / breakpoint() 로 *진짜* 디버깅, cProfile + timeit + memory profiling 으로 *측정 후* 최적화, ruff (새 빠른 linter/formatter), mypy / pyright 로 type 검사, pre-commit 으로 repo 정직 유지, coverage 로 테스트가 *진짜로* 뭘 커버하는지 보기, hypothesis 로 property-based testing.

    Lesson list (5)퀴즈 · 3 문제
  15. 15💻CLI — Script 에서 Tool 로

    0/4 lessons

    argparse / click / typer / Rich

    한 번 쓰고 버릴 스크립트가 *남이 install 해서 쓰는 도구* 로 변하는 과정. argparse (stdlib, 자주 충분), click (가장 popular 한 third-party), typer (현대적, type-hint 기반, cwkPippa 가 쓰는 것), 그리고 1995 처럼 안 보이게 해주는 Rich 라이브러리.

    Lesson list (4)퀴즈 · 3 문제
  16. 16🐍Pythonic — 문법 너머

    0/5 lessons

    EAFP / duck typing / 모든 Pythonic Way callout 의 합류 지점

    다른 모든 트랙이 가리켜온 합류 지점. EAFP vs LBYL, duck typing 과 structural subtyping, map/filter 보다 comprehension idiom, generator 가 답인 시점, *클래스 안 쓰는 게* 답인 시점, 객체를 언어와 통합시키는 dunder methods, 그리고 *멀쩡해 보여도* Pythonic 하지 않은 패턴 모음 — 코드 리뷰 통과해도 결국 리팩터되는 그런 코드들. 이 quest 의 모든 lesson 마다 'Pythonic Way' callout 박혀있는데, 이 트랙이 그것들의 통합 정리.

    Lesson list (5)퀴즈 · 3 문제
  17. 17🌸에필로그 — cwkPippa 안의 Python

    0/1 lessons

    FastAPI / Pydantic / async / pytest — cwkPippa 안의 Python

    한 lesson. cwkPippa 의 Python 코드베이스 walking tour. 웹 layer 의 FastAPI (boundary 에서 async), 어디서나 Pydantic 으로 타입 안전 boundary, 끝까지 async/await, 안전망 pytest, 그리고 이 quest 의 모든 트랙 패턴이 *이름 그대로* 어떻게 코드에 박혀있는지. 이 lesson 끝나면 cwkPippa 소스 한 줄 한 줄 *여기서 배운 것* 으로 알아볼 수 있어.

    Lesson list (1)
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이playful

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.