본문 바로가기
Language_/python

[python] Type Hint (타입 힌트) 정리

by 낭람_ 2020. 8. 8.
반응형
def func(a: int) -> int :
    b: int = 1
    return a+b

요즘 파이썬의 코드들을 보면 이러한 타입 힌트들이 많이 보인다.

 

타입 힌트는 python 3.5 버전에서 나오게 되었다. 코드에 대한 가독성에 도움을 주고 사용자들이 헷갈리지 않게 하기 위해 나왔다.

 

python 3.5 버전에서는 함수의 반환값에 대한 자료형만 지원했지만 [PEP484]

def greeting(name: str) -> str:
    return 'Hello ' + name

 

이후  python 3.6 버전에서는 변수에도 타입 힌트 표기가 가능해졌다.

def greeting(name: str) -> str:
    s: str = 'Hello ' + name
    return s

 

타입 힌트는 위에서 말했듯 3.5버전에서 나온 것이기 때문에 3.5 버전 이상을 사용해야 타입 힌트를 적용할 수 있다.

 

def func(a) :
    ...

기존에 타입힌트를 사용하지 않았을 때의 문제점은 만약 위와 같은 함수가 있을 때, a 값의 자료형에 대해 몰랐다. 

 

a에 int형을 넣어야 하지만 자료형을 몰라 문자를 넣게 될 수 있고 그러면 버그가 발생하게 될 것이다.

 

이를 방지하기 위해서 타입힌트가 나오게 되었다.

def func(a: int) -> bool:
    ...

 

위와 같이 함수를 선언한다면 a에 int형을 넣는다는 것을 알 수 있고, 함수의 반환 값이 boolean형태라는 것을 알 수 있게 된다.

 

이렇게 사용하게 되면 이제 파이썬이 정적 타입을 지향하고 a에는 무조건 int만 넣을 수 있는가에 대한 의문이 생기게 된다.

 

하지만 파이썬이 정적 타입을 지향하는 것은 아니다. 타입 힌트는 말 그대로 그냥 힌트일 뿐이다. 파이썬은 동적 타입을 지향하며, a에는 문자열을 넣어도 오류는 나지 않는다.

 

a: int = "Hello"

 

이런 식으로 작성해도 오류가 나지 않는다는 것이다. 

 

a: int = "Hello"
print(type(a))

 

<class 'str'>

 

위의 코드를 실행하면 a는 int가 아닌 str이라는 것을 알 수 있다.

 

일반적으로 코딩 테스트나 알고리즘을 구현할 때는 타입을 지정하지 않아도 명확하게 이 변수가 사용하는 자료형을 알 수 있기에 타입 힌트를 지정하지 않아도 된다.

 

하지만, 코드 정리할 때 타입 힌트를 지정한다면 코드 리뷰 시 좋을 것이다.

반응형

댓글