feat(wiki): 코드 그라운딩 23문서 + MOC 학습지도 39개
- 코드 그라운딩: 기술 주제 문서의 '적용 사례'에 실제 레포 구현 위치
(file:line)+커밋 자동 주입 (예: 문서 청킹 전략→connectai/src/retrieval/chunker.ts).
멱등 마커(CODE-GROUNDING)로 재실행 시 갱신.
- MOC: 39개 클러스터 폴더에 _MOC.md 학습지도 생성(진입점+통찰 주석).
도구: Datacollect/scripts/{code_grounding,moc_generator}.mjs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
---
|
||||
id: moc-python
|
||||
title: "Python — 학습 지도 (MOC)"
|
||||
category: "MOC"
|
||||
status: "active"
|
||||
type: "map-of-content"
|
||||
tags: ["MOC", "Python"]
|
||||
updated_at: 2026-06-08
|
||||
---
|
||||
|
||||
# 🗺️ Python — 학습 지도 (MOC)
|
||||
|
||||
> 이 클러스터의 **200개 문서**에 대한 진입점과 학습 순서. 자동 생성(moc_generator.mjs) — 재실행 시 갱신.
|
||||
|
||||
## 🚀 여기서 시작 (Start here)
|
||||
- [[기본값 인자의 함정]] — 작은 편의가 큰 공유 상태 버그로 이어질 수 있다.
|
||||
- [[데코레이터 기초]] — 데코레이터는 문법 트릭이 아니라 반복 관심사를 묶는 도구다.
|
||||
- [[모듈과 import 시스템 기초]] — import 구조는 단순 편의가 아니라 아키텍처 경계의 일부다.
|
||||
- [[예외 처리 기초]] — 예외 처리는 숨기기보다 실패를 구조화하는 도구여야 한다.
|
||||
- [[컨텍스트 매니저 입문]] — 정리 코드를 흩뿌리기보다 생명주기를 구문 안에 묶는 것이 안전하다.
|
||||
- [[파일 I/O 기본 패턴]] — I/O는 데이터보다 경계와 자원 수명이 더 중요하다.
|
||||
- [[프로파일링 기초]] — 느리다는 감상 대신 어디가 느린지 측정하는 습관이 중요하다.
|
||||
- [[ast 기반 코드 조작 기초]] — 코드를 텍스트보다 구조로 다루면 자동화의 수준이 달라진다.
|
||||
- [[asyncio 기본기]] — 비동기는 문법보다 실행 모델을 이해해야 안전하게 쓸 수 있다.
|
||||
- [[hashlib와 해시 기초]] — 해시는 보안 만능키가 아니라 목적에 맞는 도구 선택이 중요하다.
|
||||
- [[Pandas 데이터 처리 기본기]] — 데이터프레임은 편하지만, 변형 흐름이 흐려지면 디버깅이 어려워진다.
|
||||
- [[pip 기본기와 의존성 관리]] — 패키지 설치는 시작일 뿐, 버전 전략이 더 중요하다.
|
||||
- [[pytest 기본기]] — 좋은 테스트 도구는 코드보다 사고 방식을 바꾼다.
|
||||
- [[Python 보안 기본기]] — Python 보안은 프레임워크보다 경계와 신뢰 모델에서 시작된다.
|
||||
- [[Python 성능 튜닝 기본기]] — 튜닝은 감이 아니라 가장 큰 병목부터 제거하는 작업이다.
|
||||
- [[SQLAlchemy ORM 기초]] — ORM는 SQL을 없애는 도구가 아니라 데이터 경계를 추상화하는 도구다.
|
||||
- [[threading 기본과 GIL]] — GIL은 'thread 쓸모없음'이 아니라 CPU와 I/O 경계 이해 문제다.
|
||||
- [[typing 기본기]] — 타입 힌트는 주석이 아니라 설계 의사소통 도구다.
|
||||
|
||||
## 📚 전체 문서 (Topics)
|
||||
|
||||
> ⚠️ 문서가 많은 클러스터(182개) — 첫 글자별로 묶음. 하위 폴더로 재구성 검토 권장.
|
||||
|
||||
### A
|
||||
- [[ABC와 Protocol]] — 계약을 어떻게 표현하느냐가 결합도를 좌우한다.
|
||||
- [[Airflow와 워크플로 오케스트레이션]] — 워크플로 도구는 코드보다 운영 책임과 관측성 기준이 중요하다.
|
||||
- [[argparse로 CLI 만들기]] — 작은 자동화 도구일수록 CLI 품질이 생산성을 좌우한다.
|
||||
- [[args와 kwargs 실전]] — 유연성은 좋지만, 지나치면 API 경계가 흐려진다.
|
||||
- [[assert 설계와 메시지]] — 실패 메시지는 미래의 자신과 동료를 위한 문서다.
|
||||
- [[async 웹 크롤링 패턴]] — 크롤링은 속도보다 대상 서비스와의 관계를 먼저 생각해야 한다.
|
||||
- [[async context manager]] — 비동기 자원도 정리 규칙이 명확해야 누수와 좀비 연결을 막을 수 있다.
|
||||
- [[async generator와 streaming API]] — 스트리밍은 데이터 형식보다 전달 리듬 설계가 중요하다.
|
||||
- [[asyncio와 blocking 코드 섞기]] — 한 줄의 blocking 호출이 전체 이벤트 루프를 멈출 수 있다.
|
||||
- [[attrs와 dataclass 비교]] — 도구 비교는 기능표보다 실제 모델링 요구로 봐야 한다.
|
||||
|
||||
### B
|
||||
- [[backpressure 개념과 Python 구현]] — 처리량보다 흐름 제어를 이해하는 순간 시스템 안정성이 올라간다.
|
||||
- [[BeautifulSoup와 HTML 파싱]] — 웹 문서는 구조가 더럽기 때문에 파서는 관용적이어야 한다.
|
||||
- [[benchmarking과 pyperf]] — 성능 수치는 재현 가능한 측정 문맥과 함께 읽어야 한다.
|
||||
- [[black과 코드 포맷팅]] — 스타일 논쟁을 줄이면 더 중요한 설계 논의에 시간을 쓸 수 있다.
|
||||
- [[bytes와 binary data 처리]] — 텍스트와 바이너리를 분리해 생각하면 데이터 처리 사고가 훨씬 선명해진다.
|
||||
|
||||
### C
|
||||
- [[cancelation 설계]] — 취소는 예외 상황이 아니라 기본 흐름으로 설계해야 한다.
|
||||
- [[Celery와 작업 큐]] — 비동기 업무 분리는 실행 모델과 장애 모델을 함께 설계해야 한다.
|
||||
- [[CI에서 Python 테스트 실행]] — 로컬에서만 통하는 파이프라인은 자동화가 아니라 착각이다.
|
||||
- [[Click과 Typer로 CLI 앱 만들기]] — 도구성 앱일수록 사용자 경험은 CLI 설계에 크게 좌우된다.
|
||||
- [[collections 모듈 핵심]] — 표준 라이브러리 작은 도구를 알면 코드가 훨씬 또렷해진다.
|
||||
- [[concurrent.futures 실전]] — 풀 기반 병렬 처리는 편하지만 작업 크기와 직렬화 비용을 봐야 한다.
|
||||
- [[contextlib 고급 패턴]] — 자원 생명주기 조합은 contextlib를 알수록 훨씬 안전해진다.
|
||||
- [[copy와 deepcopy]] — 복사는 값 복제가 아니라 관계 복제 문제로 봐야 한다.
|
||||
- [[coroutine과 await 의미론]] — await 한 줄이 제어 흐름을 넘기는 지점이라는 감각이 중요하다.
|
||||
- [[coverage 해석]] — coverage는 지도이지 목적지가 아니다.
|
||||
- [[csv와 구조적 텍스트 처리]] — 간단한 표 형식도 경계 조건을 무시하면 쉽게 깨진다.
|
||||
|
||||
### D
|
||||
- [[dataclass 고급 옵션]] — dataclass는 편의 기능이지만 도메인 모델 설계 의도를 먼저 세워야 한다.
|
||||
- [[dataclass와 타입 힌트 조합]] — 모델 정의는 간결하되 의미는 선명해야 한다.
|
||||
- [[datetime과 시간대 처리]] — 시간 문제는 항상 언젠가 터지므로 초기에 기준을 세워야 한다.
|
||||
- [[decimal과 금융 계산]] — 정확도 요구가 높은 도메인에서는 숫자 타입이 곧 설계다.
|
||||
- [[deque와 queue 패턴]] — list로 억지 구현하기보다 목적에 맞는 구조를 쓰는 것이 Python답다.
|
||||
- [[descriptor protocol]] — Python 객체 모델의 핵심 마법은 descriptor를 이해할 때 비로소 열린다.
|
||||
- [[dict 내부 모델과 해시 기반 사고]] — dict를 잘 이해하면 Python 데이터 구조 전반이 더 선명해진다.
|
||||
- [[Django의 강점과 한계]] — 배터리 포함 프레임워크는 생산성과 제약을 함께 가져온다.
|
||||
- [[Docker로 Python 앱 배포]] — 이미지 크기보다 재현성과 시작 속도, 보안 경계를 함께 봐야 한다.
|
||||
- [[doctest 활용 기준]] — 예제 문서가 실제로 실행된다는 사실은 큰 신뢰 자산이 된다.
|
||||
- [[dunder methods와 연산자 오버로딩]] — 연산자 오버로딩은 멋짐보다 직관성과 기대 일치를 먼저 봐야 한다.
|
||||
|
||||
### E
|
||||
- [[editable install과 개발 편의]] — 로컬 패키지 개발 경험을 잘 설계하면 리팩토링 비용이 줄어든다.
|
||||
- [[Enum과 상수 모델링]] — 매직 문자열을 줄이는 것만으로도 도메인 버그가 많이 줄어든다.
|
||||
- [[enumerate, zip, unpacking]] — 반복 제어를 간결하게 만들수록 로직이 더 잘 보인다.
|
||||
|
||||
### F
|
||||
- [[FastAPI 구조 설계]] — 프레임워크보다 라우팅, 서비스, 스키마 경계 설계가 더 중요하다.
|
||||
- [[fixture 설계]] — fixture는 편의 기능이 아니라 테스트 의존성 모델이다.
|
||||
- [[flaky test 줄이기]] — 신뢰할 수 없는 테스트는 없는 테스트만큼 위험하다.
|
||||
- [[Flask와 마이크로 프레임워크 사고]] — 작다고 단순한 것은 아니며, 선택한 만큼 구조 책임이 커진다.
|
||||
- [[fractions와 유리수 표현]] — 문제에 맞는 수 표현을 쓰면 복잡한 보정 코드를 줄일 수 있다.
|
||||
- [[functools 실전]] — 함수 유틸은 작지만 설계 감각을 크게 바꿀 수 있다.
|
||||
- [[functools.wraps와 메타데이터 보존]] — 작은 메타데이터 보존이 디버깅과 문서화를 크게 돕는다.
|
||||
|
||||
### G
|
||||
- [[generator 함수 설계]] — 제너레이터는 메모리 절약뿐 아니라 처리 파이프라인 사고를 열어준다.
|
||||
- [[Generic 타입 설계]] — 제네릭은 재사용성을 높이지만 복잡도 비용도 함께 온다.
|
||||
- [[glob와 파일 패턴 검색]] — 파일 시스템 탐색도 표현 방식이 분명해야 버그가 줄어든다.
|
||||
|
||||
### I
|
||||
- [[if와 match 문 선택 기준]] — 분기 구조가 복잡해질수록 표현 방식 자체가 설계 품질이 된다.
|
||||
- [[introspection과 inspect 모듈]] — 동적 언어의 힘은 introspection에서 오지만, 과용은 복잡도를 부른다.
|
||||
- [[isort와 import 정렬]] — 작은 일관성도 코드 리뷰 피로를 크게 낮춘다.
|
||||
- [[iterator protocol 깊게 보기]] — iterator protocol은 Python 컬렉션과 lazy 처리의 공통 뼈대다.
|
||||
- [[itertools 사고법]] — 반복 로직은 직접 구현보다 조합하는 쪽이 더 안전할 때가 많다.
|
||||
|
||||
### J
|
||||
- [[json 처리와 직렬화 기준]] — 직렬화는 데이터 구조를 외부 세계와 약속하는 행위다.
|
||||
- [[Jupyter 노트북 운영 규칙]] — 탐색 도구와 생산 코드 경계를 명확히 해야 혼란이 줄어든다.
|
||||
|
||||
### L
|
||||
- [[list, tuple, set, dict 선택 기준]] — 자료구조 선택 하나가 코드 성격을 바꿀 수 있다.
|
||||
- [[Literal과 제한된 값 모델링]] — 문자열 상수를 타입으로 끌어올리면 많은 실수를 미리 막을 수 있다.
|
||||
- [[logging 기반 디버깅]] — 디버깅은 출력이 아니라 질문을 남기는 로그에서 시작된다.
|
||||
- [[logging 표준 패턴]] — print에서 logging으로 넘어가는 순간 운영 관측성이 달라진다.
|
||||
|
||||
### M
|
||||
- [[mock와 monkeypatch]] — mock는 빠른 해결책이지만 설계 냄새를 감추는 도구가 되기 쉽다.
|
||||
- [[multiprocessing와 프로세스 병렬]] — CPU 병렬은 늘 이득이 아니라 데이터 이동 비용과의 싸움이다.
|
||||
- [[mutation testing in Python]] — 테스트가 있는 것과 강한 것은 다르다.
|
||||
- [[mypy 운영 전략]] — 타입 도입은 기술 문제이자 팀 운영 문제다.
|
||||
|
||||
### N
|
||||
- [[namedtuple과 dataclass 비교]] — 가벼운 구조체 선택도 변경 가능성 기준으로 봐야 한다.
|
||||
- [[NewType로 도메인 경계 강화]] — 숫자와 문자열이 같아 보여도 도메인 의미는 다를 수 있다.
|
||||
- [[NumPy 배열 사고]] — NumPy는 반복문을 없애는 기술이 아니라 데이터 형태를 바꾸는 사고다.
|
||||
|
||||
### O
|
||||
- [[operator 모듈]] — 작은 표준 함수들이 key extraction과 조합 코드를 더 읽기 쉽게 만든다.
|
||||
- [[Optional과 Union 판단]] — None이 끼는 순간 API 경계가 더 중요한 설계 문제가 된다.
|
||||
|
||||
### P
|
||||
- [[parameterized tests]] — 반복 테스트는 복붙보다 데이터 구조로 표현할 때 더 읽기 쉽다.
|
||||
- [[ParamSpec과 Callable 모델링]] — 함수를 감싸는 순간 타입 정보 보존이 설계 품질이 된다.
|
||||
- [[partial과 함수 조합]] — 반복 인자를 고정하는 작은 추상화가 API 가독성을 크게 높인다.
|
||||
- [[pathlib 깊게 쓰기]] — 경로 연산을 문자열 덧붙이기로 처리하는 습관에서 빨리 벗어나는 게 좋다.
|
||||
- [[pathlib 중심 파일 시스템 다루기]] — 경로는 문자열이 아니라 경로 객체로 다룰 때 실수가 줄어든다.
|
||||
- [[pdb와 디버거 사용법]] — 멈춰서 보는 감각이 생기면 추측성 디버깅이 줄어든다.
|
||||
- [[pickle 직렬화 위험과 활용]] — 편리한 직렬화일수록 신뢰 경계를 엄격히 봐야 한다.
|
||||
- [[pip-tools와 잠금 자동화]] — 간단한 도구 하나로 업데이트 통제가 훨씬 쉬워질 수 있다.
|
||||
- [[poetry와 uv 선택 기준]] — 도구 전쟁보다 팀 속도와 재현성 요구를 먼저 봐야 한다.
|
||||
- [[Polars와 현대 데이터프레임]] — 도구 비교는 유행보다 데이터 크기와 팀 익숙함을 먼저 봐야 한다.
|
||||
- [[pre-commit과 품질 게이트]] — 작은 자동화가 코드베이스 일관성을 지켜준다.
|
||||
- [[property-based testing with Hypothesis]] — 예시보다 규칙을 테스트하면 더 넓은 버그 공간을 만날 수 있다.
|
||||
- [[property와 검증 로직]] — 단순 getter/setter보다 도메인 규칙 노출 방식이 더 중요하다.
|
||||
- [[Protocol 기반 구조적 타이핑]] — 상속 없이도 계약을 표현할 수 있다는 점이 Python 타입 시스템의 큰 장점이다.
|
||||
- [[Pydantic 모델 설계]] — 검증 모델과 도메인 모델을 섞지 않는 감각이 중요하다.
|
||||
- [[pyproject.toml 현대 표준]] — 설정의 중심을 한곳에 두면 도구 통합과 재현성이 좋아진다.
|
||||
- [[pyright와 타입 검사 도구 비교]] — 도구 선택은 기능보다 팀 속도와 피드백 루프를 봐야 한다.
|
||||
- [[Python 관측 가능성]] — 운영 가능한 코드는 동작하는 코드보다 한 단계 더 멀리 간다.
|
||||
- [[Python 데이터 파이프라인 설계]] — 데이터 흐름은 코드보다 재현성과 실패 복구 전략이 중요하다.
|
||||
- [[Python 머신러닝 스크립트 운영]] — 모델보다 데이터 버전, 설정, 재현성이 더 큰 운영 문제를 만든다.
|
||||
- [[Python 실행 모델과 인터프리터 이해]] — 실행 모델을 알면 성능과 디버깅 판단이 훨씬 쉬워진다.
|
||||
- [[Python 에이전트 도구 통합]] — 에이전트 품질은 모델보다 도구 경계와 상태 관리에서 많이 갈린다.
|
||||
- [[Python 자동화 스크립트 설계]] — 짧은 스크립트일수록 예외 처리와 idempotency가 중요하다.
|
||||
- [[Python 철학과 The Zen of Python]] — Python다운 코드는 문법 암기보다 철학 이해에서 시작된다.
|
||||
- [[Python 캐싱 전략]] — 캐시는 빠르게 만들지만, 무효화 설계 없이는 버그도 빠르게 만든다.
|
||||
- [[Python 코딩 운영 체계]] — Python 실력은 개별 문법보다 전체 워크플로우를 연결하는 능력에서 완성된다.
|
||||
- [[Python 프로젝트 아키텍처 패턴]] — Python 프로젝트의 혼란은 대개 경계보다 파일 수부터 늘릴 때 시작된다.
|
||||
- [[Python 플러그인 시스템]] — 확장성을 원한다면 코어와 플러그인의 계약을 먼저 설계해야 한다.
|
||||
- [[Python API rate limiting]] — 부하 제어는 성능 기능이 아니라 신뢰성 기능이다.
|
||||
- [[Python ETL 품질 기준]] — ETL은 동작만 하면 되는 스크립트가 아니라 신뢰성이 필요한 시스템이다.
|
||||
- [[Python monorepo 전략]] — 저장소 구조는 협업 속도와 의존성 건강도를 함께 좌우한다.
|
||||
- [[Python package as app 설계]] — 앱은 사용자 경험과 운영 수명주기를 같이 설계해야 한다.
|
||||
- [[Python package as library 설계]] — 내부 코드와 공개 라이브러리는 수정 자유도의 철학이 다르다.
|
||||
- [[Python RAG 파이프라인 구조]] — RAG는 단순한 호출 체인이 아니라 데이터 품질 문제이기도 하다.
|
||||
- [[Python과 메시지 큐]] — 비동기 메시징은 느슨한 결합과 새로운 장애 모델을 동시에 가져온다.
|
||||
- [[Python과 시스템 스크립팅]] — 시스템 스크립트일수록 보수성과 안전장치가 더 중요하다.
|
||||
- [[Python과 LLM 애플리케이션]] — AI 앱에서도 결국 중요한 건 모델보다 경계, 비용, 검증 루프다.
|
||||
- [[Python과 WebAssembly 가능성]] — 새 배포 환경은 매력적이지만 실행 모델과 패키지 제약을 먼저 봐야 한다.
|
||||
- [[Python에서 C 확장과 FFI]] — 성능 최적화는 언어를 바꾸는 결정을 포함할 때가 있다.
|
||||
- [[Python에서 OpenTelemetry]] — 성능과 장애는 개별 서비스보다 호출 체인에서 봐야 한다.
|
||||
- [[Pythonic 코드를 읽는 법]] — Pythonic은 유행어가 아니라 의도와 가독성의 균형 감각이다.
|
||||
|
||||
### Q
|
||||
- [[Queue 기반 producer-consumer]] — 파이프라인은 순서보다 흐름과 압력 제어를 봐야 한다.
|
||||
|
||||
### R
|
||||
- [[random과 난수 제어]] — 난수도 목적에 따라 테스트용, 시뮬레이션용, 보안용을 나눠야 한다.
|
||||
- [[re와 정규표현식 실전]] — regex는 강력하지만 읽기 비용을 관리해야 한다.
|
||||
- [[requests와 httpx 비교]] — 네트워크 호출은 문법보다 timeout, retry, observability가 중요하다.
|
||||
- [[requirements.txt와 constraints.txt]] — 의존성 명세를 나누면 업데이트 리스크를 더 잘 통제할 수 있다.
|
||||
- [[ruff modern linting]] — 도구가 빨라질수록 규칙은 더 일상적인 피드백 루프로 들어온다.
|
||||
|
||||
### S
|
||||
- [[secrets와 보안 난수]] — 편한 난수와 안전한 난수는 다르다.
|
||||
- [[Self 타입과 fluent API]] — 타입 시스템이 자기 반환 API를 이해하면 리팩토링이 쉬워진다.
|
||||
- [[Semaphore와 동시성 제한]] — 빠름보다 시스템을 무너뜨리지 않는 속도가 중요하다.
|
||||
- [[set 활용 패턴]] — set는 단순한 자료형이 아니라 의도를 드러내는 강한 표현이다.
|
||||
- [[setuptools와 build backend]] — 패키징 도구 선택은 메타데이터, 빌드, 배포 흐름을 같이 봐야 한다.
|
||||
- [[shutil과 파일 작업]] — 표준 도구를 쓰면 운영체제 차이와 예외 처리 부담을 줄일 수 있다.
|
||||
- [[signal 처리와 graceful shutdown]] — 종료 품질은 운영 시스템의 성숙도를 보여준다.
|
||||
- [[singledispatch와 다형 함수]] — 클래스 계층 없이도 함수 단위 확장성을 만들 수 있다.
|
||||
- [[snapshot testing 신중하게 쓰기]] — 빠른 회귀 방지가 곧 의미 있는 테스트는 아니다.
|
||||
- [[staticmethod, classmethod, instance method]] — 메서드 종류는 문법이 아니라 책임 배치 문제다.
|
||||
- [[statistics 모듈]] — 작은 분석까지 무조건 pandas로 갈 필요는 없다.
|
||||
- [[structlog와 구조적 로깅]] — 운영 로그는 문자열보다 질의 가능한 이벤트에 가까워야 한다.
|
||||
- [[subprocess 안전하게 쓰기]] — 쉘 호출은 강력하지만 경계와 입력 신뢰도를 엄격히 봐야 한다.
|
||||
|
||||
### T
|
||||
- [[Task 생성과 관리]] — 태스크는 만들기보다 수명과 실패 전파를 관리하는 것이 더 어렵다.
|
||||
- [[tempfile과 안전한 임시 파일]] — 임시 자원은 편하지만 수명과 정리 정책을 놓치기 쉽다.
|
||||
- [[timeout과 경계 제어]] — 무한 대기는 종종 가장 비싼 운영 버그다.
|
||||
- [[tox와 nox 기반 테스트 매트릭스]] — 환경 차이를 초기에 잡아야 배포 후 놀라지 않는다.
|
||||
- [[trio와 anyio 관점]] — API 차이보다 취소 모델과 구조적 동시성 철학이 더 중요하다.
|
||||
- [[TypeAlias와 의미 있는 타입 이름]] — 좋은 타입 이름 하나가 문서 여러 줄을 대신할 수 있다.
|
||||
- [[TypedDict와 dict 스키마]] — 느슨한 dict도 경계에서 스키마를 가지면 협업 비용이 크게 줄어든다.
|
||||
|
||||
### U
|
||||
- [[uuid와 식별자 생성]] — 식별자는 데이터 모델과 운영 추적의 핵심 연결점이다.
|
||||
|
||||
### V
|
||||
- [[venv와 환경 격리]] — 재현성 없는 Python 환경은 작은 프로젝트도 불안정하게 만든다.
|
||||
|
||||
### W
|
||||
- [[weakref와 객체 수명]] — 객체를 오래 붙잡는 실수는 캐시와 이벤트 시스템에서 자주 생긴다.
|
||||
- [[wheel과 sdist 이해]] — 배포 포맷을 이해하면 설치 문제를 더 빠르게 진단할 수 있다.
|
||||
|
||||
### Y
|
||||
- [[yield from과 위임]] — 반복 로직 합성은 작은 위임 문법 하나로 훨씬 깔끔해질 수 있다.
|
||||
|
||||
### Z
|
||||
- [[zoneinfo 현대적 사용법]] — 로컬 시간과 UTC 경계를 모호하게 두면 데이터 일관성이 무너진다.
|
||||
|
||||
### 가나다
|
||||
- [[공개 API 타입 안정성]] — 공개 API의 타입 품질은 사용자 경험의 일부다.
|
||||
- [[구조적 동시성]] — 태스크를 던져놓기보다 수명을 구조화해야 예측 가능성이 생긴다.
|
||||
- [[람다와 작은 함수 선택 기준]] — 짧음과 명확함은 다르며, lambda는 용도가 분명할 때만 강하다.
|
||||
- [[런타임 검증과 pydantic]] — 타입 힌트만으로 외부 입력을 믿으면 경계에서 깨진다.
|
||||
- [[리스트 컴프리헨션]] — 짧다고 항상 좋은 것이 아니라, 의도가 선명할 때만 컴프리헨션이 빛난다.
|
||||
- [[메모리 프로파일링]] — 속도보다 메모리로 먼저 무너지는 시스템도 많다.
|
||||
- [[메모리 효율적인 데이터 처리]] — 큰 데이터를 다룰 때는 전체 로드보다 흐름 처리 사고가 중요하다.
|
||||
- [[메타클래스 언제 쓰는가]] — 메타클래스는 마지막 수단에 가까우며, 목적이 분명해야 한다.
|
||||
- [[문서화와 타입의 관계]] — 타입만으로 전달되지 않는 의도는 문서가 채워야 한다.
|
||||
- [[문자열 모델과 유니코드]] — 문자열 버그는 문법보다 인코딩 경계에서 많이 터진다.
|
||||
- [[반복문과 순회 철학]] — Python 루프는 카운터보다 iterable 중심 사고로 볼 때 더 강력하다.
|
||||
- [[배포 아티팩트와 릴리스 운영]] — 패키지 배포는 파일 업로드가 아니라 변경 책임의 전달이다.
|
||||
- [[버전 관리와 semantic versioning]] — 버전은 숫자가 아니라 사용자와의 약속이다.
|
||||
- [[변수 바인딩과 이름 해석]] — Python에서는 값보다 객체와 이름의 관계를 먼저 이해해야 한다.
|
||||
- [[불변과 가변 객체]] — 상태 버그의 상당수는 가변성 경계를 흐리게 두는 데서 시작된다.
|
||||
- [[비교 연산과 truthiness]] — Python의 truthiness를 제대로 이해하면 조건문 버그를 많이 줄일 수 있다.
|
||||
- [[비동기 디버깅]] — 비동기 버그는 코드보다 타이밍과 상태 전이를 봐야 잡힌다.
|
||||
- [[숫자 타입과 연산 규칙]] — 숫자 타입 선택은 정확성과 성능, 도메인 요구를 함께 본다.
|
||||
- [[스코프와 LEGB 규칙]] — 클로저와 전역 상태 문제는 LEGB를 선명히 이해하면 많이 줄어든다.
|
||||
- [[슬라이싱과 시퀀스 사고]] — 슬라이싱은 편하지만 복사와 뷰의 차이를 모르면 비용을 놓치기 쉽다.
|
||||
- [[에러 재현 최소화]] — 좋은 재현 케이스 하나가 긴 추측보다 훨씬 강하다.
|
||||
- [[웹소켓 서버의 비동기 패턴]] — 실시간 서버는 연결 수명과 fan-out 비용을 항상 같이 봐야 한다.
|
||||
- [[의존성 잠금 전략]] — 같은 requirements라도 잠금 전략이 없으면 같은 환경이 아니다.
|
||||
- [[재귀와 반복 선택 기준]] — 우아함보다 종료 조건과 디버깅 가능성을 먼저 봐야 한다.
|
||||
- [[정렬과 key 함수]] — 정렬 전략은 비교보다 key 추출로 단순화할 때 읽기 쉬워진다.
|
||||
- [[제너레이터 표현식]] — 메모리 효율은 종종 eager보다 lazy 사고에서 나온다.
|
||||
- [[클래스 데코레이터]] — 클래스 데코레이터는 메타클래스보다 가벼운 대안이 될 수 있다.
|
||||
- [[클로저와 nonlocal]] — 작은 상태 캡슐화는 클래스보다 클로저가 더 적합할 때가 있다.
|
||||
- [[타입 기반 리팩토링]] — 좋은 타입은 변경을 막는 족쇄가 아니라 변경을 돕는 지도다.
|
||||
- [[타입 힌트 성능 오해 바로잡기]] — 타입 힌트는 주로 개발 생산성 자산이지 성능 기능이 아니다.
|
||||
- [[테스트 데이터 전략]] — 테스트 데이터가 지저분하면 테스트 설계도 흔들린다.
|
||||
- [[테스트 코드에도 타입을 붙일 것인가]] — 모든 곳에 같은 엄격도를 강요하기보다 효율적인 범위를 정해야 한다.
|
||||
- [[통합 테스트 경계 설계]] — 현실과 닿는 테스트가 있어야 자신감 있는 배포가 가능하다.
|
||||
- [[패키지 구조 설계 src layout]] — 패키지 구조는 테스트/배포 오류를 미리 예방하는 아키텍처 장치다.
|
||||
- [[함수 시그니처 설계]] — 좋은 함수 시그니처는 문서 절반을 대신한다.
|
||||
- [[함수는 일급 객체다]] — 함수가 값이라는 감각을 가지면 콜백, 데코레이터, 전략 패턴이 자연스러워진다.
|
||||
- [[환경 변수와 설정 관리]] — 설정은 코드 바깥에 있지만 품질과 운영의 핵심이다.
|
||||
|
||||
### 기타
|
||||
- [[__new__와 __init__ 차이]] — 생성자 로직을 나눠 이해하면 불변 객체와 팩토리 설계가 쉬워진다.
|
||||
- [[__slots__와 메모리 최적화]] — 메모리 최적화는 측정 기반이어야 하고 가독성 비용과 같이 봐야 한다.
|
||||
|
||||
_200 docs · 자동 생성 2026-06-08_
|
||||
Reference in New Issue
Block a user