파이썬 IDE의 가장 큰 문제점이라고 꼽히던 Intellisense 문제를 조금이나마 해결할 수 있는 방법인 python annotation(PEP484)를 소개한다.
파이썬은 자료형이 명시되지 않은 언어이고 타입을 추론하지 못하는 경우도 있어서 IDE가 제대로 된 인텔리센스를 해주지 못하는 경우가 많았다. 예를들면 아래와 같이 cv2.imread 함수의 경우 반환 타입이 2가지가 될 수 있다.
이미지를 읽는데 성공했을 경우 np.ndarray가 반환되고 실패할 경우 NoneType이 반환된다. IDE의 경우에는 런타임에 들어가기전까지 실제로 반환되는 타입을 추론할 수 없으므로 인텔리센스가 동작하지 않는다.
하지만 프로그래머가 개발중에는 당연히 np.ndarray가 반환되는걸 기대하므로 인텔리센스가 np.ndarray로 동작해서 메서드를 보여주길 원한다.
따라서 이제 python annotation의 기능을 사용해서 사용하는 타입을 지정함으로서 편리한 코딩을 할 수 있다.
img = cv2.imread('ss.jpg') # type: np.ndarray << python2 방식
img: np.ndarray = cv2.imread('ss.jpg') # << python3 방식
또는 pytorch같은경우 많은 함수들이 C Wrapper로 되어 있어서 타입추론이 IDE에서 보여지지 않기도 한다. 이럴때 python annotation을 사용하면 유용하다.