1. 타입힌트란?
타입 힌트(Type Hint)는 파이썬 3.5부터 도입된 문법으로,
함수의 매개변수와 반환값에 자료형 정보를 명시하는 기능입니다.
def greet(name: str) -> str:
return "Hello, " + name
name: str => 파라미터 name은 문자열(str)이어야 한다.
-> str => 함수는 문자열을 반환한다.
2. 왜 타입 힌트를 써야할까요?
이유 | 설명 |
✅ 코드 가독성 | 협업 시 함수의 의도를 쉽게 파악할 수 있음 |
✅ 코드 자동완성 향상 | VSCode, PyCharm에서 IDE가 똑똑하게 자동완성 제공 |
✅ 정적 분석 가능 | mypy, pyright 등으로 오류 사전 탐지 가능 |
✅ 대규모 프로젝트에 적합 | 규모가 커질수록 타입 명시가 유지보수에 유리함 |
3. 기본 문법
def add(x: int, y: int) -> int:
return x + y
: → 매개변수 타입 지정
-> → 반환 타입 지정
4. 다양한 타입 예시
타입 예시 | 설명 |
int, str, bool, float | 기본 자료형 |
list[int] | 정수 리스트 (Python 3.9+) |
dict[str, int] | 문자열 키와 정수 값 딕셔너리 |
Optional[str] | 문자열 or None 허용 |
Union[int, str] | 둘 중 하나 허용 |
Any | 아무 타입이나 허용 |
Callable[[int, int], int] | 함수를 인자로 받거나 반환할 때 |
typing 모듈에서 가져와야 하는 경우도 있음
from typing import Optional, Union, Any, Callable
5. 클래스에서 사용하기
class User:
def __init__(self, name: str, age: int) -> None:
self.name = name
self.age = age
6. 타입 힌트는 강제인가?
아닙니다!
타입 힌트는 "힌트"일 뿐, 실행 시 오류를 막지는 못합니다.
def greet(name: str) -> str:
return "Hello, " + name
print(greet(123)) # 런타임 에러는 안남
제대로 검사하기 위해서는 정적 분석 도구를 써야합니다.
mypy my_script.py
7.정리
- 타입 힌트는 읽기 쉬운 코드, 버그 예방, 자동완성 등 많은 장점이 있음
- 그러나 런타임에서 강제되지 않으므로 mypy, pyright와 같은 정적 분석 도구와 함께 사용하는 것이 좋음
- 규모가 큰 프로젝트일수록 꼭 사용하는 습관을 들이자!
반응형
'웹 개발 > 🐍 Python' 카테고리의 다른 글
Python 자주 쓰는 예외 클래스 (1) | 2025.07.01 |
---|---|
Python 정규표현식 re.match 사용법 (1) | 2025.07.01 |
리스트 컴프리헨션(list comprehension) (1) | 2025.06.30 |
파이썬 .env 사용법 (0) | 2025.05.16 |
python | fastAPI uvicorn gunicorn 배포하기 (0) | 2025.05.14 |