파이썬은 동적 타입 언어지만 「타입 힌트」(PEP 484)로 정적 검사를 받을 수 있습니다.
큰 코드베이스나 라이브러리는 타입 힌트 + 정적 검사가 사실상 표준이 되었습니다.
타입 힌트 기본.
def add(a: int, b: int) -> int: return a + b.
변수 — count: int = 0.
컨테이너 — names: list[str], scores: dict[str, int].
옵셔널 — name: str | None = None.
mypy — 정통 타입 검사기.
pip install mypy.
mypy myfile.py — 타입 힌트와 실제 사용의 불일치 검출.
없는 메서드 호출, 잘못된 타입 전달 같은 버그를 실행 전 발견.
ruff — 새로운 통합 도구(2023~).
Rust 기반의 압도적으로 빠른 linter + formatter + 타입 체커 일부.
flake8·black·isort·pyflakes를 한 번에.
최근 모든 프로젝트가 ruff로 이동 중.
Pyright·Pylance — Microsoft의 강력한 검사기.
VS Code의 Pylance가 이걸 사용.
mypy보다 빠르고 정확하다는 평.
결국 어느 도구를 쓰든 「타입 힌트로 버그 잡기 + 자동 완성 향상」이라는 효과는 동일.
한 줄 요약
타입 힌트는 def f(x: int) -> str 식.
mypy로 정적 검사, ruff로 통합 lint(매우 빠름), Pyright로 더 강력한 검사.
큰 프로젝트는 사실상 표준.
더 알아볼 것
- TypedDict — 딕셔너리 타입
- Protocol — 구조적 타입
- Generic — 제네릭 클래스