Chapter 1-6 Mypy 설치 및 정적 타입 검사 가이드

2025. 5. 23. 10:28·Fastapi

🧠 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 플러그인
    • 참고: https://docs.pydantic.dev/latest/integrations/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
'Fastapi' 카테고리의 다른 글
  • Chapter 2-2 Coverage 설치 및 테스트 커버리지 가이드
  • Chapter 2-1 Pytest 설치 및 단위 테스트 입문 가이드
  • Chapter 1-5 Git 기본 세팅 및 커밋 가이드
  • Chapter 1-3 Python 코드 포매터 Black 설치 및 설정 가이드
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (784) N
      • Python (32)
      • 프로젝트 (107) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    trumpmuskclash
    homebartrend
    global politics
    americanlaw
    classaction
    btsdischarge
    livebroadcast
    newpoliticalparty
    btsreunion
    self-growth
    chatgpterror
    basalcellcarcinoma
    chinanightlife
    college reunions
    urbantrends
    btscomeback
    titaniumcase
    travel ban
    youngprofessionals
    lawsuitculture
    뷔
    hotcoffeecase
    smartphonedurability
    bts
    btsjungkook
    remittance
    life reflection
    americaparty
    RM
    gpterror
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 1-6 Mypy 설치 및 정적 타입 검사 가이드
상단으로

티스토리툴바