Python 타입 어노테이션
타입 어노테이션
- 타입 어노테이션은 파이썬 3.5에서 도입된 기능으로 파이썬 코드에서 변수, 함수 인자, 반환 값의 기대되는 데이터 타입을 명시적으로 선언하는 방법이다. 타입 어노테이션은 코드의 가독성을 높이고, 정적 타입 검사 도구 (예:mypy)를 사용하여 타입 오류를 사전에 잡아내기 위한 목적으로 사용된다. 하지만 너무 많은 양의 타입 정보가 코드에 포함되면 가독성이 저하될 수 있다.
기본 타입 어노테이션
- 기본 타입 어노테이션은 int, str, float, bool이 있다.
이미지를 보면 name은 문자열을 의미하고, age는 정수를 의미하고, float는 실수, bool은 불리언이라는 것을 의미한다.
이 처럼 변수의 타입을 명시해 준다.
복잡한 어노테이션(list, tuple,dict, set)
- 컬렉션 타입에 대한 어노테이션 더 복잡하다. typing 모듈에서 제공하는 타입 힌트를 사용해야 한다.
names의 타입은 문자열 요소들로 이루어진 것을 의미하고, age의 타입은 튜플 요소가 정수임을 의미하고, student_scores의 타입은 딕셔너리의 key값은 문자열, value값은 실수임을 의미한다. 마지막으로 unique_numbers의 타입은 set의 요소들이 정수임을 의미한다는 것을 작성한 것이다.
함수의 타입 어노테이션
- 함수 타입의 어노테이션은 반환값의 타입을 명시하는 방법이다.
타입 어노테이션으로 a, b를 int 타입으로 명시했다. 여기서 우리가 문자열 타입을 주면 에러가 발생할까? 아니다. 타입 어노테이션은 확정적으로 그 타입을 체크하는 것이 아니고 힌트이기 때문이다. 즉 이지미에서 '십'과 '삼'이라는 문자열을 줬을 때, 값은 제대로 나온다. 저 값의 타입을 확인해 보면 str 타입이라고 나오게 된다. 하지만 그 밑에 문자열과 정수를 주면 우리가 알듯이 에러가 발생한다. 타입 어노테이션은 힌트인 것이다.
class에서도 타입 어노테이션을 사용할 수 있다. 이미지에서 name은 str, age는 int로 받는다. 여기서 return을 할 때, string 값으로 주기 위해서 -> str 이런 표시를 한다. 만약 리턴값이 없으면 None을 사용하면 된다.
옵셔널(Optional)
- 변수가 특정 타입이거나 None일 수 있는 경우 사용한다.
위에서 "김사과"의 value값은 float로 80.5가 나오는데 "이메론"은 정의되지 않았기 때문에 None이 나온다.