타입 힌트는 변수, 인수 및 함수의 반환 값에 대해 예상되는 타입을 명시적으로 지정하는 방법입니다. 이 문법은 파이썬 3.5에서 도입되었습니다 (PEP 484). 타입 힌트는 정적이며, 인터프리터는 실행 중에 이를 무시합니다. 주로 코드 분석 도구(mypy, Pyright, IDE)를 위해 사용됩니다.
타입 힌트는 다음에 도움이 됩니다:
예:
def add(x: int, y: int) -> int: return x + y def show(items: list[str]) -> None: print(', '.join(items))
자주 묻는 질문:
타입 힌트가 코드의 성능이나 실행 정확도에 어떤 식으로든 영향을 미칠 수 있나요?
답변: 아닙니다. 타입 힌트는 성능이나 프로그램의 런타임 기능에 영향을 미치지 않습니다. 이는 단지 메타데이터일 뿐입니다. 그러나 이는 FastAPI와 같은 일부 도구나 프레임워크에서 타입 검증 및 유효성 검사에 사용될 수 있습니다.
이야기
프로젝트에서 큰 동적 구조체에 list, dict를 사용하여 타입을 지정했지만 요소에 대한 설명을 생략했습니다 (예: def f(x: list): ...). 이로 인해 정적 분석기는 타입 오류를 감지할 수 없었습니다. 왜냐하면 주석으로부터 내부에 무엇이 있는지 명확하지 않기 때문입니다.
이야기
Python 3.7에서 지연 평가를 지원하기 위해 from __future__ import annotations를 사용했지만, 프로젝트의 한 부분에서 이것을 잊어버렸습니다. 이로 인해 포워드 참조가 정적 분석 및 일부 프레임워크 사용 시 런타임 오류를 발생시켰습니다.
이야기
큰 프로젝트에서 반환 값의 타입을 잘못 설정했습니다: Optional을 가져오는 것을 잊어버린 결과, mypy에서 오류가 발생하고 IDE에서 자동 완성과 오류 강조에 방해가 되는 여러 문서화되지 않은 문제가 발생했습니다.