Python은 변수와 함수에 타입을 지정할 수 있는 타입 어노테이션(Type Annotation) 기능이 있다. (Version >= 3.5)
※ 실제로 코드가 작동하는 데에는 달라지는게 없으며(에러를 발생시키지 않음), IDE를 통해 타입 불일치에 대해 알려주고 자동완성 기능 제공을 한다.
동적 타입 언어
Python은 기본적으로 동적 타입 언어이다.
즉, 아래와 같이 프로그램 실행 중에 변수의 타입을 동적으로 바꿀 수 있다는 말이다.
(C, C++, Java 등의 언어에서는 변수 선언 시에 타입을 지정하기에 변경 불가)
var = 20221231
print(type(var))
# <class 'int'>
var = "20221231"
print(type(var))
# <class 'str'>
언뜻 보면 이런 동적 타입 언어가 무조건 좋아 보이지만 프로젝트가 커질수록 잘못된 타입으로 인해 버그가 생길 확률이 늘어난다.
타입 어노테이션
그래서 파이썬에서도 타입 어노테이션을 지원하기 시작한다. 타입 어노테이션은 타입에 대한 힌트를 알려주는 것이다.
타입 어노테이션은 파이썬 코드의 타입 표시를 표준화해주어 IDE에서 해석할 수 있고, 코드 자동 완성 및 타입 체킹에도 활용된다.
변수의 타입 어노테이션은 아래와 같이 ( : ) 및 Type과 함께 사용한다.
# 변수명: type = 값
num: int = 20221231
print(type(num))
# <class 'int'>
함수의 타입 어노테이션은 아래와 같이 사용한다.
함수의 입력 Parameter에도 타입 어노테이션을 사용 가능하고, 함수의 출력값에도 타입 어노테이션을 사용할 수 있다.
입력 Parameter는 변수에 사용하는 것처럼 사용하고, 출력값의 타입 어노테이션은 아래와 같이 ( -> )와 타입을 이용해 사용한다.
# def 함수명(parameter) -> 타입:
# ...
def add(num1: int, num2: int) -> int:
return num1 + num2
print(add(10, 20))
# 30
타입 어노테이션을 사용하면 아래와 같은 코드는 에러가 발생할 것 같지만, 실행해보면 정상적으로 작동한다.
이유는 타입 어노테이션은 단순히 타입에 힌트만 주는 것이기에, 잘못된 타입이 들어와도 에러가 발생하지 않는다.
def add(num1: int, num2: int) -> int:
return num1 + num2
print(add(10, 3.14))
# 13.14
현재 필자가 사용하고 있는 IDE는 VS Code인데, VS Code에서는 힌트 및 경고조차 주지 않는다.

VS Code에서 이를 활용하기 위해서는 VS Code Extensions인 'Pylance'를 설치하고 Type Check Mode를 On으로 설정해 주어야 한다.
VS Code Extensions 적용
Extension 검색창에 아래와 같이 pylance를 입력하고 첫 번째 Extension(Pylance)을 설치해 준다.

설치 후 Settings에서 type checking을 검색하면 아래와 같이 Mode를 변경할 수 있다. Mode를 basic으로 변경하고 저장한다.

그리고 다시 아까 작성한 Code를 보면 아래와 같이 경고가 뜨는 것을 확인할 수 있다.

그리고 빨간 줄에 마우스를 올리면 아래와 같이 경고 내용을 확인할 수 있다.

참고로 이렇게 경고가 떠도 여전히 실행은 된다.
함수 Parameter Default 값 설정 with 타입 어노테이션
타입 어노테이션과 함께 함수의 Default 값을 설정하여 아래와 같이 사용할 수 있다.
def add(num1: int = 0, num2: int = 0) -> int:
return num1 + num2
print(add(10))
# 10
여기까지 Python의 기본적인 타입 어노테이션 문법을 설명하였다.
타입 어노테이션에 대한 추가 내용은 다음 글을 참고하자. (작성 예정)
'Python' 카테고리의 다른 글
| Python __slots__ (0) | 2023.01.15 |
|---|---|
| Python 타입 어노테이션 Part2 (0) | 2023.01.01 |