1. 파이썬은 동적 프로그래밍 언어
파이썬은 동적(dynamic) 프로그래밍 언어입니다. 인터프리터(interpreter)가 코드를 실행하면서 타입을 추론하여 체크합니다.
또한, 변수 타입이 고정되어있지 않기 때문에 개발자가 원한다면 변경할 수 있습니다.
num = 1
type(num)
#<class 'int'>
num = "1"
type(num)
#<class 'str'>
위 코드를 보면 알 수 있듯이, 변수 타입이 바뀌었습니다. 정적 프로그래밍 언어에서는 상상하기 힘든 일입니다.
덕분에 파이썬은 다른 언어에 비해 매우 간단명료한 코드 작성이 가능합니다.
하지만, 그와 동시에 약점이 되기도합니다.
소규모 앱개발이나 일회성 스크립트에서는 큰 장점이지만, 규모가 커지면 파이썬의 다이나믹함이 치명적인 버그로 이어질 확률이 높아집니다. 이 때 등장하는 것이 타입힌팅(Type Hinting)입니다.
2. 타입 어노테이션 /힌트
타입 힌팅(Type Hinting) 은 이름에서도 알 수 있듯이, 파라미터와 리턴값의 데이터값을 명시적으로 지정해주는 것입니다.
만약 타입 힌팅이 없었다면, 파이썬 개발자들은 주석(comments)를 사용해야하는데 이는 일반 주석과도 혼동되기 쉽습니다.
#def 함수명 (파라미터1 : 파라미터1 타입 , 파리미터2 : 파라미터2 타입 ) -> 리턴타입 :
#return 리턴값
def word_count(word : str , cnt : int) -> int :
return len(word)*cnt
반면 위와 같은 타입 힌팅은, 타입 어노테이션(annotation)이라는 새로운 방법으로 파이썬 코드의 타입 표시를 표준화합니다.
그로 인해, IDE 에서도 해석되고 자동 완성이나 정적 타입 체킹에도 활용되고 있습니다.
*주의사항: 파이썬 언어 차원에서는 변수나 함수에 추가한 타입 어노테이션이 부정확해도, 어떤 경고나 오류도 발생하지 않는다.
타입 힌팅(type hinting)은 우리가 작성한 코드의 가독성을 높여줄 뿐입니다.
여기서 더 나아가, 코드 품질 향상을 원한다면 타입 체킹(type checking)까지 보시기 권합니다.
참고자료
www.daleseo.com/python-type-annotations/
파이썬 타입 어노테이션/힌트
Engineering Blog by Dale Seo
www.daleseo.com
docs.python.org/3/library/typing.html
typing — Support for type hints — Python 3.9.4 documentation
Note The Python runtime does not enforce function and variable type annotations. They can be used by third party tools such as type checkers, IDEs, linters, etc. In the function greeting, the argument name is expected to be of type str and the return type
docs.python.org