📘 기본 타입 힌트
| 타입 힌트 | 의미 | 예시 |
|---|
int | 정수 | age: int = 25 |
float | 실수 | score: float = 92.5 |
bool | 불리언 | is_valid: bool = True |
str | 문자열 | name: str = "Alice" |
list / List[T] | 리스트 | values: List[int] = [1, 2, 3] |
dict / Dict[K, V] | 딕셔너리 | info: Dict[str, int] = {"a": 1} |
tuple / Tuple[T1, T2] | 튜플 | coord: Tuple[int, int] = (3, 4) |
set / Set[T] | 집합 | nums: Set[int] = {1, 2, 3} |
✅ List, Dict, Tuple 등은 from typing import ... 필요
🔀 복합 타입 힌트
| 타입 힌트 | 의미 | 예시 |
|---|
Union[A, B] | A 또는 B 중 하나 | x: Union[int, str] = 42 or "hi" |
Optional[T] | T 또는 None | x: Optional[int] = None → Union[int, None] |
Any | 아무 타입이나 허용 | data: Any |
Literal[...] | 정해진 값만 허용 | x: Literal["small", "medium", "large"] |
Callable[[ArgTypes], ReturnType] | 함수 타입 지정 | func: Callable[[int, str], bool] |
Type[T] | 클래스 자체 타입 (인스턴스 아님) | model_cls: Type[BaseModel] |
Annotated[T, ...] | 추가 메타정보 | x: Annotated[int, "positive"] |
🧩 예제 코드
from typing import List, Dict, Union, Optional, Callable
def process_id(id: Union[int, str]) -> None:
print(f"ID: {id}")
def greet(name: Optional[str] = None) -> str:
return f"Hello, {name or 'Guest'}"
def apply_func(func: Callable[[int, int], int], a: int, b: int) -> int:
return func(a, b)
scores: List[float] = [98.5, 76.0, 88.5]
mapping: Dict[str, int] = {"a": 1, "b": 2}