파이썬의 타입 어노테이션(type annotations)

0. 타입 어노테이션(type annotations)란?

Type TypeAnnotating은 PEP 484에 추가된 새로운 기능으로, 변수에 타입 힌트를 추가할 수 있습니다.
코드를 읽는 사람에게 어떤 타입의 변수를 예상해야 하는지 알려주는 데 사용됩니다.
이 힌트는 동적 타입의 Python에 정적 타입의 컨트롤 감각을 가져옵니다.
이는 변수 또는 메서드를 초기화/선언한 후 지정된 타입 선언을 추가하는 방식으로 수행됩니다.

1. 왜 사용하는데?

정적으로 입력된 언어의 유용한 기능은 변수의 값을 특정 도메인 내에서 항상 알 수 있다는 것입니다.
예를 들어 문자열 변수는 문자열, int형 변수는 int만 사용할 수 있습니다.
동적으로 입력되는 언어(Python)에서는 기본적으로 변수의 자료형이 무엇인지 또는 그 결과가 무엇인지 추측할 수 없습니다.

2. 예시

기본형

my_var: <type> = <value>

위와 같은 기본형을 가집니다.

예시

age: int = 5
print(age)
# 5

타입 어노테이션은 런타임 시간에 영향을 미치지 않는다는 점에서 주목할만 합니다.
이러한 힌트들은 인터프리터에의해 무시되고 오직 가독성을 증가시키기 위해 사용됩니다.
그러나 이러한 타입 힌트들은 실행시 강제되지 않으므로 확인하는 것은 여전히 코드의 메서드, 함수, 블록에 달려있습니다.

3. 어노테이션의 함수&메서드

함수를 쓰거나 호출할 때 예상 변수의 타입을 사용하여 매개 변수를 올바르게 전달하고 사용할 수 있습니다.
함수가 int를 예상할 때 str을 통과하면 예상대로 작동하지 않을 가능성이 높습니다.
아래의 코드에서 확인할 수 있습니다.

def mystery_combine(a: str, b: str, times: int) -> str:
    return (a + b) * times

함수의 파라미터에 : str 및 : int를 추가하여 어떤 타입이어야 하는지를 나타냅니다.
이렇게 하면 코드를 더 명확하게 읽을 수 있고, 그 목적을 좀 더 명확하게 알 수 있을 것입니다.

또한 -> str을 추가하여 이 함수가 str을 반환함을 나타냅니다.
'->' 을 사용하면 어떤 함수나 메서드의 반환값 타입을 보다 쉽게 표시할 수 있어 향후 개발자의 혼란을 피할 수 있습니다!

이 경우에도 처음의 잘못된 방법으로 코드를 호출할 수 있지만, 좋은 리뷰를 통해 프로그래머가 의도하지 않은 방식으로 함수를 사용하고 있음을 알 수 있기를 바랍니다. 타입 어노테이션과 타입 힌트는 팀 및 멀티 개발자 Python 애플리케이션에 매우 유용합니다.
코드 판독에서 대부분의 추측을 제거합니다!

이를 한 단계 더 확장하여 기본 인수 값을 처리할 수 있습니다.
times 파라미터의 디폴트 인수값으로 2를 사용하기 위해 아래 mistery_combine을 수정했습니다. 이 기본값은 타입 힌트 뒤에 배치됩니다.

def mystery_combine(a: str, b: str, times: int = 2) -> str:
    return (a + b) * times

4. 참고

참고 자료

+ Recent posts