본문 바로가기
ML/ML-함수관련

type annotation, type hint

by lucian 2022. 2. 4.

보통 파이썬은 타입을 명시하지 않는다.

동적 프로그래밍 언어인 파이썬은 이 변수의 타입을 추론해서 만들어주기 때문에 개발자는 편하게 코드를 축소해서 짤 수 있다.

 

보통 n=1을 하면 파이썬은 '아 int형이구나' 라고 알아 듣고,

n='1'을 하면 '아 string형이구나' 하고 알아 듣는다.

 

하지만 프로젝트의 규모가 커지고 코드를 봐야하는 사람들이 많아지면 문제가 발생한다.

이 변수가 어떤 타입인지를 모르기 때문에 치명적인 버그로 이어질 확률이 높아지며 안정성에 위협이 되는 요소가 된다.

그렇기에 사람들은 타입 힌트(type hint)란 걸 명시했다. 처음엔 # int형임 이런 식으로 했지만 점차 파이썬 버전이 업그레이드 되면서 표준화되었다. 이것이 type annotation이다.

 

 

 

간단하다. 변수 이름 뒤에 :(콜론) 을 붙이고 타입을 명시해주면 된다.

num:int =1

여기서 num은 변수 이름이고 :int는 타입을 명시해준 것

 

 

 

함수의 변환값에는 ->을 써준다.

func(num:int, num2:float=3.5) -> float :
	return num+num2

이렇게 func의 return값이 float로 명시된 것을 볼 수 있다.

 

 

여기서 개발자들이 가만히 있지 않는다. 더 편하게 라이브러리로 만들어놓은 것들이 있다.

바로 typing 모듈이다.

from typing import List, Set, Dict, Tuple

nums_lst:List[int] = [1]

float_set:Set[float] = [1.5, 2.556]

leri_dict: Dict[str, float] = {'left': 1.0, 'right': 0.9}

gildong: Tuple[int, str, List[float]] = (10, "Hong", [120.3, 60.9])

이렇게 하면 자료형을 더 쉽게 명시화 할 수 있게 된다.

댓글