728x90
typing은 Python에 타입 힌트를 추가하여 코드의 가독성을 높이고, 버그를 사전에 예방할 수 있도록 도와주는 라이브러리입니다.
Python은 실행 전까지 변수의 타입을 체크하지 않는 동적 타이핑을 사용하지만, typing을 쓰면 코드를 실행하지 않고도 mypy 같은 정적 분석 도구를 통해 오류를 잡아낼 수 있습니다.
단, 3.9 버전 이상 부터 기본적인 타입에 대해서는 typing 없이도 직접 타입을 명시할 수 있습니다.
def process_scores(names: list[str], scores: dict[str, int]) -> float:
return sum(scores.values()) / len(names)
타입 종류
아래는 typing에서 지원하는 타입들에 대한 목록입니다.
| 타입 | 기능 | 예시 |
| Annotated | 부가정보 | Annotated[int, "range(0, 100)"] |
| Any | 타입 제한 없음 | Any |
| AsyncGenerator | 비동기 제네레이터. await 함수 실행 + yield 반환 모두 시행하는 함수의 반환 타입으로 사용 |
AsyncGenerator[Event, None] |
| Callable | 호출 가능한 값. 주로 함수 | Callable[[int, int], int] |
| Dict | 딕셔너리 | Dict[str, Any] |
| List | 리스트 | List[str] |
| Literal | 특정 값 | Literal["A", "Running", "light"] |
| Optional | None이 될 수도 있는 값 | Optional[int] |
제네릭 타입
데이터 구조를 먼저 선언한 뒤, 구조 내부에 들어갈 타입은 나중에 결정하고 싶을 때 사용합니다. TypeVar와 함께 쓰입니다.
from typing import TypeVar, Generic
T = TypeVar('T') # 이제부터 T는 타입을 의미함
class Box(Generic[T]): # 클래스 내의 T는 나중에 사용자가 지정한 타입이 들어감
def __init__(self, content: T):
self.content = content
int_box = Box[int](10) # 이제 T는 int를 의미함728x90
'Language > Python' 카테고리의 다른 글
| [Python] Uv에 대하여 (1) | 2026.04.09 |
|---|---|
| [Python] Library | 10. logging (0) | 2026.03.26 |
| [Python] Library | 09. dotenv (0) | 2026.03.26 |
| [Python] Syntax | 04. import (0) | 2026.02.17 |
| [Python] Syntax | 03. Decorator(@) (0) | 2026.02.16 |