Python

Python 타입 어노테이션

dustKim 2024. 3. 24. 21:00
타입 어노테이션

- 타입 어노테이션은 파이썬 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

class에서도 타입 어노테이션을 사용할 수 있다. 이미지에서 name은 str, age는 int로 받는다. 여기서 return을 할 때, string 값으로 주기 위해서 -> str 이런 표시를 한다. 만약 리턴값이 없으면 None을 사용하면 된다.

옵셔널(Optional)

- 변수가 특정 타입이거나 None일 수 있는 경우 사용한다.

Optional

위에서 "김사과"의 value값은 float로 80.5가 나오는데 "이메론"은 정의되지 않았기 때문에 None이 나온다.

'Python' 카테고리의 다른 글

재귀 호출(recursive call)  (0) 2024.04.01
Python 파일 입출력 라이브러리  (0) 2024.03.25
Python 모듈(Module)과 파일 입출력  (0) 2024.03.24
Python 예외처리  (0) 2024.03.20
Python Special Method  (1) 2024.03.20