본문 바로가기
Language/Python

[Python] Type Hint, Callable types

by 며루치꽃 2021. 12. 19.

Type Hint

 

파이썬에서 Type Hint는 다음과 같이 진행할 수 있다.

 

심플 타입일 경우

int_var: int = 88
str_var: str = "hello world"
float_var: float = 88.9
bool_var: bool = True

Type Hint라고 하는 이유는 아래 예제와 같다

int_var: str = 88

예를 들어, int_var 이라는 변수에 88이라는 값을 할당해주면 int형이지만 타입 힌트에서 str로 해줬을 경우 에러가 날 것 같지만, 에러가 나지 않는다. 말 그대로 힌트이기 때문에 타입 검사를 하지 않는다.

 

리스트일 경우

from typing import List, Tuple, Dict

list_var: List[str] = ["1", "2", "3"]

리스트 객체 같은 경우에는 리스트 안에 어떤 값들이 들어올지도 적어준다. 

typing 모듈 안에 List를 불러오고 넣어준다.

 

튜플일 경우

tuple_var: Tuple[int, ...] = (1, 3, 4)

튜플 객체 또한 리스트와 같이 표현해주면 된다.

 

딕셔너리일 경우

dic_var: Dict[str, int] = {"hello": 47}

리스트를 만들고 첫번째 인자로 key에 대한 타입, 두번째 타입에는 value의 타입으로
Dict[key타입, value타입]으로 정리해준다.

 

생산성이 좋은 동적 타이핑 언어를 사용하면 타이핑 역시 쉽게 사용했지만, 협업을 할 경우 타입이 다르게 나와 결과가 나올 경우를 방지하기 위해 변수에서 했던 것처럼 메서드에도 타입 힌트를 적용할 수 있다

 

메서드일 경우

def cal_add(x: int, y: int) -> int:
    return x + y

인자의 타입에 인자의 타입 형을 적어주고 -> 뒤에는 return 타입을 적어주면 된다.


Callable types

Callable types 란 함수의 타이핑을 어떻게 할지에 대한 것들이다.

def add(a: int, b: int) -> int:
    return a + b

위에서 설명했던 것처럼 인자의 타입도 명시를 해주고 -> 뒤에 return 타입을 명시해준다.

파이썬에서는 함수도 일급객체이기 때문에 함수로 인자를 넘길 수 있다.

이 때, 사용하는 것이 Callable types이다.

 

from typing import Callable

typing 모듈 안에 Callable을 import 해준다.

 

def foo(func: Callable[[int, int], int]) -> int:
    return func(2, 3)

먼저, func 이라는 인자는 Callable 객체라고 힌트를 준다.

Callable 객체의 구성은 다음과 같다.

Callable[[인자의 타입, ...], return될 타입]

첫번째 인자에는 인자 값들에 대한 타입들을 적는다. 

두번째 인자에는 return될 타입을 적는다. 

댓글