타입 힌트는 실행 중 값을 강제하지 않는다. 도구가 호출 관계를 검사하고 IDE가 자동 완성을 제공하도록 돕는 메타데이터다.
from collections.abc import Iterable
def total(values: Iterable[int]) -> int:
return sum(values)
def find(name: str) -> int | None:
...입력에는 필요한 최소 인터페이스를 받고, 반환에는 구체 타입을 주는 편이 사용하기 좋다. 읽기만 하는 함수는 `list[int]`보다 `Sequence[int]`나 `Iterable[int]`가 넓다.
`Any`는 검사를 끄고 전파된다. 모르는 타입은 `object`로 받고 `isinstance` 등으로 좁히는 편이 안전하다. `cast`는 런타임 변환이 아니라 검사기에게 하는 주장이다.
타입 별칭은 복잡한 구조에 도메인 이름을 붙이고, `NewType`은 같은 런타임 타입의 식별자를 정적으로 구분한다. 다음 편의 Protocol은 상속 없이 구조적 타입을 표현한다.
댓글
0개아직 댓글이 없습니다.