[Python] type hint

난나다·2022년 12월 2일
0

Python 정리

목록 보기
8/10

python을 사용한 프로젝트를 진행하는 와중 다른 분들의 코드를 리뷰하다가 type hint를 적용하는 사례를 보게 되었다.
앞으로 협업을 하게 된다면 필요하게 될 것 같아 알아보기로 했다.

type hint를 사용하는 이유

python은 동적(dynamic) 프로그래밍 언어로서 인터프리터(interpreter)가 코드를 실행하면 타입(type)을 사용자가 지정하지 않고 자동으로 구분한다.

이러한 파이썬의 특성은 빠르고 가벼운 개발을 할 때는 장점이 되지만 좀 더 큰 규모의 프로젝트를 진행하게 되면 내가 작성한 코드를 상대방이 이해하는데 불친절한 요소가 되고 결국 오류를 일으킬 수도 있다.

좀 더 협업에 어울리고 친절한 코드를 작성하기 위해 type hint는 python 3.5버전에 추가되었다.

type hint의 특성

type hint는 개발자가 읽을 때 도움을 주는 용도이지 type hint를 따르지 않았다고 해서 오류가 발생하지는 않는다.

type hint 작성

변수 타입 힌트

  • 변수 이름 뒤에 콜론:을 붙이고 타입을 명시한다.
name: str = "sony"

age: int = 27

함수 타입 힌트

  • 인자 타입과 반환 타입에 적용한다.
  • 인자에 변수와 동일한 문법을 적용하고, 반환값에는 화살표->를 사용한다.
  • 참고로 콜론과 화살표를 사용할 때, 콜론 뒤에는 한 칸만 띄우고, 화살는 앞뒤로 한 칸을 띄운다.
def stringify(num: int) -> str:
	return str(num)
    
def plus(num1: int, num2: float = 3.5) -> float:
	return num1 + num2

typing 모듈

  • 내장 타입을 이용해서 좀 더 복잡한 타입 힌트를 작성할 경우 스탠다드 라이브러리의 typing 모듈을 사용한다.
from typing import List, Set, Dict, Tuple

num: List[int] = [1]

unique_nums: Set[int] = {6, 7}

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

john: Tuple[int, str, List[float]] = (25, "John Doe", [1.0, 0.9]

사용자 정의 타입 힌트

  • 내장 타입 뿐만 아니라 사용자 클래스에 대한 타입 힌트도 추가 가능하다.
class User:
	...
    
def find_user(id: str) -> User:
	...
    
def create_user(user: User) -> User:
	...

0개의 댓글