디버깅이나 개발에 있어서는 타입이 뭔지, 무슨 메소드인지, 어떤 역할을 하는지 추적하는게 필수적인데 조금만 커져도 이게 어디서 온 메소드인지, 공통 클래스 메소드인지 override된건지, 무슨 변수인지 등을 추적할수가 없음...
JIT컴파일을 돌려서 강제로 추적하는 방법도 있지만 램을 무식하게 먹고 보통 유료IDE에만 붙어있기도 하고
타입 힌트의 중요성은 남이 쓴 코드를 읽을때 이게 뭐가 들어왔고 뭘 처리하는지 보는거고 런타임에서는 단순히 약간의 assert빼고는 아무 기능이 없음
예를 들어 함수를 def min(a : int, b : int) -> int 으로 표시해둔다면 이 함수는 정수와 정수를 받아서 정수를 내놓는구나라는 이해가 가능하고
실용적으로는 PIL.Image를 내놓는다면 process(arg : ndarray, **kwargs) -> Image|None 같은 식으로 아 이미지나 None를 내놓는구나 라는 이해가 쉬워짐
Julia같은 경우는 이런 추적이 거의 무조건 가능한 (IJulia는 예외고 아직 불안정) 컴파일 언어의 특징을 따라가고 있지만 파이썬은 그런 점에서 약간 부족함 (그래서 프로젝트가 커지면 그냥 자바로 가는경우도 경험적으로 많음)