티스토리 뷰

파이썬은 원래 동적 타입 언어라서 타입이 없지만...

타입을 명시해서 혼란을 낮추는 방법이 존재한다. 

그 중 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를 상속받은 타입이라는 걸 나타낸다.

 

제네릭을 사용하는 이유

제네릭을 사용하면 매번 타입을 변환할 필요가 없고, 그러므로 함수를 인자의 타입에 따라 반복적으로 정의할 필요도 없다.

따라서 코드가 간결해지고 코드의 재사용성도 높아진다.

 

 출처

https://velog.io/@sawol/제네릭-프로그래밍-with-Python

'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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함