🧠 Mypy 설치 및 정적 타입 검사 가이드
🧾 Mypy란?
- Mypy는 Python 코드에 대해 정적 타입 검사를 수행하는 도구입니다.
- 실행하지 않고도 타입 오류를 사전에 잡을 수 있어 대규모 프로젝트에서 유용합니다.
🔗 공식 사이트: https://github.com/python/mypy
🎥 소개 영상: https://www.youtube.com/watch?v=GClpahJS6Rw
📥 설치:
poetry add --group=dev mypy==1.13.0
⚙️ Mypy 설정 (pyproject.toml)
[tool.mypy]
plugins = ["pydantic.mypy"]
python_version = 3.13
strict = true
📌 설정 설명
- plugins: Pydantic 모델 타입 지원을 위한 mypy 플러그인
- strict = true: 함수 인자와 반환값에 타입 힌트가 누락되었는지도 검사
- python_version: 현재 사용하는 Python 버전에 맞춰 설정
Pydantic은 나중에 다룰 예정이니 지금은 몰라도 괜찮습니다.
▶️ Mypy 실행 방법
예제 코드:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/hello/{name}")
async def say_hello(name: str):
return {"message": f"Hello {name}"}
검사 실행:
poetry run mypy .
출력 결과:
Success: no issues found in 6 source files
🔍 정적 vs 동적 타입 체크
- Static (정적): 실행 전에 이미결정된것 분석 가능 → Mypy
- Dynamic (동적): 실행 중에 바뀌는것 타입 결정 → Python 기본
Mypy는 코드를 실제 실행하지 않고, 소스 코드 기반으로 타입 오류를 검출합니다.
✅ reveal_type()을 사용하면 변수의 추론 타입을 확인할 수 있음
reveal_type()
📘 Type Hint 기초 문법 (Type Hint 101)
my_int: int = 1
my_str: str = "abc"
my_list: list[str] = ["abc", "def"]
my_tuple: tuple[str, str] = ("abc", "def")
# 길이가 정해지지않을때 (튜플)
my_tuple: tuple[str, ...] = ("abc", "def", "ghi")
my_dict: dict[str, int] = {"a": 1, "b": 2}
or_type: list[str | int] = ["a", 1]
🧑💻 PyCharm 연동 팁
- Pydantic,Ruff 모델 검사 지원을 위한 플러그인 설치 가능
- 설정 후 mypy 검사 결과와 타입 오류를 IDE 상에서 바로 확인 가능
✅ Recap
- ✅ Mypy는 정적 분석기로, 실행 전에 타입 오류를 검출할 수 있음
- ✅ poetry로 설치 후 pyproject.toml에 설정
- ✅ strict = true로 더 철저한 타입 검사 적용 가능
- ✅ Pydantic 플러그인을 추가해 데이터 검증과 모델 정의를 더 명확히
- ✅ 타입 힌트 작성을 통해 코드 안정성 및 가독성 향상
'Fastapi' 카테고리의 다른 글
Chapter 2-2 Coverage 설치 및 테스트 커버리지 가이드 (0) | 2025.05.23 |
---|---|
Chapter 2-1 Pytest 설치 및 단위 테스트 입문 가이드 (0) | 2025.05.23 |
Chapter 1-5 Git 기본 세팅 및 커밋 가이드 (0) | 2025.05.23 |
Chapter 1-3 Python 코드 포매터 Black 설치 및 설정 가이드 (0) | 2025.05.23 |
Chapter 1-2 Poetry 설치 가이드 (0) | 2025.05.23 |