티스토리 뷰
파이썬은 원래 동적 타입 언어라서 타입이 없지만...
타입을 명시해서 혼란을 낮추는 방법이 존재한다.
그 중 Generics는 여러 타입을 허용한다.
데이터 형식에 의존하지 않고 인자, 변수 또는 반환값 등이 여러 다른 데이터 타입들을 가질 수 있는 방식을 제네릭이라고 한다.
from typing import TypeVar
T = TypeVar('T')
U = TypeVar('U')
def are_equal(a:T, b:U) -> bool:
return a == b
print(are_equal(10, 10.0)) # True
example
async def _crawl_and_reduce(
self,
urls: Iterable[str],
parse_fn: Optional[Callable[[str], T]] = None,
callback_fn: Optional[Callable[[Optional[T]], None]] = None,
):
TypeVar
T = TypeVar("T", str, int)
TypeVar에는 추가적인 인자도 입력할 수 있는데 위와 같이 원하는 타입을 입력함으로써 해당 제네릭 타입은 str 또는 int라는 제한을 둘 수 있다.
T = TypeVar("T", bound=int)
또는 위처럼 bound인자에 원하는 타입을 입력하여 해당 타입 또는 해당 타입을 상속받은 타입이라고 명시해줄 수 있다. 위 예제는 int 또는 int를 상속받은 타입이라는 걸 나타낸다.
제네릭을 사용하는 이유
제네릭을 사용하면 매번 타입을 변환할 필요가 없고, 그러므로 함수를 인자의 타입에 따라 반복적으로 정의할 필요도 없다.
따라서 코드가 간결해지고 코드의 재사용성도 높아진다.
출처
'PL > Python' 카테고리의 다른 글
[Python] is와 ==의 차이 (0) | 2022.01.05 |
---|---|
유니코드(Unicode)와 UTF-8 (0) | 2021.12.29 |
[Python] for문을 작성하는 3가지 방법 (0) | 2021.12.29 |
[Python] 설치 PATH 찾기 (0) | 2021.12.28 |
[Python] struct(구조체) 사용하기 (0) | 2021.12.27 |