https://www.daleseo.com/python-typing/

List, Dict, Tuple, Set

타입 어노테이션을 사용하다 보면 리스트, 사전, 터플, 세트와 같은 파이썬 내장 자료 구조에 대한 타입을 명시해야 할 때가 있습니다. 이럴 때는 typing 모듈에서 제공하는 ListDictTupleSet를 사용하여 타입 어노테이션을 추가하면 됩니다.

`from typing import List

nums: List[int] = [1, 2, 3]`

  1. `from typing import Dict

countries: Dict[str, str] = {"KR": "South Korea", "US": "United States", "CN": "China"}`

`from typing import Tuple

user: Tuple[int, str, bool] = (3, "Dale", True)`

`from typing import Set

chars: Set[str] = {"A", "B", "C"}`

Final

재할당이 불가능한 변수, 즉 상수에 대한 타입 어노테이션을 추가할 때는 typing 모듈의 Final을 사용합니다.

`from typing import Final

TIME_OUT: Final[int] = 10`

Union

여러 개의 타입이 허용될 수 있는 상황에서는 typing 모듈의 Union을 사용할 수 있습니다.

`from typing import Union

def toString(num: Union[int, float]) -> str: return str(num)`

`>>> toString(1) '1'

toString(1.5) '1.5'`

Optional

typing 모듈의 Optional은 None이 허용되는 함수의 매개 변수에 대한 타입을 명시할 때 유용합니다.

def repeat(message: str, times: Optional[int] = None) -> list: if times: return [message] * times else: return [message]

위 예제에서, Optional[int]는 Union[int, None]과 동일한 효력을 갖습니다.

Callable

파이썬에서는 함수를 일반 값처럼 변수에 저장하거나 함수의 인자로 넘기거나 함수의 반환값으로 사용할 수 있습니다. typing 모듈의 Callable은 이러한 함수에 대한 타입 어노테이션을 추가할 때 사용합니다.