[Python] Type Hint

2024. 8. 9. 23:54·코딩/노트

동적 타이핑

파이썬은 동적 타이핑(dynamic typing) 언어로, 변수나 함수의 타입을 명시적으로 지정할 필요가 없다는 점이 큰 특징입니다. 그러나 대규모 프로젝트나 협업 환경에서는 코드의 가독성과 유지보수를 위해 변수와 함수의 타입을 명확히 하는 것이 중요해집니다. 이를 위해 파이썬 특정 버젼 (>3.5)부터 도입된 타이핑 모듈과 타입 힌트 기능이 유용하게 사용 가능합니다.

Typing Module

파이썬의 typing 모듈은 타입 힌트를 작성하기 위해 필요한 여러 타입 클래스를 제공합니다. 이 모듈을 사용하면 변수, 함수 인자, 반환 값 등에 대한 타입을 명확하게 지정할 수 있습니다.

  • 기본 타입들: `int`, `float`, `str`, `bool` 등 기본 타입들을 사용할 수 있습니다.
  • 컬렉션 타입들: `List`, `Tuple`, `Set`, `Dict` 등을 사용하여 컬렉션 타입을 명시할 수 있습니다.
  • Optional 타입: 값이 `None`일 수 있음을 명시할 때 `Optional`을 사용합니다.
  • Union 타입: 여러 타입 중 하나일 수 있음을 명시할 때 `Union`을 사용합니다.

사용법

타입 힌트를 사용하면 함수의 인자와 반환 값에 대해 기대되는 타입을 명시할 수 있습니다. 이는 코드의 명확성을 높이고, IDE에서 자동완성 기능을 더욱 효율적으로 사용할 수 있도록 도와줍니다.

 

기본적으로는 `variable: data type`의 형태로 argument에 명시하며, 함수의 argument 괄호가 끝나는 지점에 화샇표 모양으로 리턴되는 값에 대한 데이터 타입을 작성합니다.

(`def function_name(arguments) -> return type:`) 

def greet(name: str) -> str:
    return f"Hello, {name}!"

위의 예시는, `name` 인자는 `str` 타입이어야 하며, 함수는 `str` 타입을 반환한다고 명시합니다.

고급

약간의 고급 타입 힌트방법도 있습니다.

Generics

제네릭 타입을 사용하여 함수나 클래스를 더 유연하게 만들 수 있습니다.

from typing import List, TypeVar

T = TypeVar('T')

def get_first_element(elements: List[T]) -> T:
    return elements[0]

Callable

함수 자체를 타입으로 지정할 때 `Callable`을 사용할 수 있습니다.

from typing import Callable

def execute_function(func: Callable[[int, int], int], a: int, b: int) -> int:
    return func(a, b)

타입 힌트의 장단점

타이핑과 타입 힌트의 장점으로는 코드의 명확성이 증가하고, IDE에서 자동 완성 및 타입 검사 기능이 향상되어 개발자의 작업 효율성이 높아진다는 점이 있습니다. 또한, 코드 리뷰나 협업 시에 코드의 의도를 명확히 전달할 수 있어 커뮤니케이션이 원활해집니다.

 

그러나 단점으로는 타입 힌트를 추가하면서 코드의 길이가 길어질 수 있으며, 복잡한 타입을 정의해야 하는 상황에서는 코드 작성이 번거로워질 수 있다는 점이 있습니다.

참조

Python 공식 문서 - Typing 모듈

 

typing — Support for type hints

Source code: Lib/typing.py This module provides runtime support for type hints. Consider the function below: The function surface_area_of_cube takes an argument expected to be an instance of float,...

docs.python.org

PEP 484 - Type Hints

 

PEP 484 – Type Hints | peps.python.org

PEP 3107 introduced syntax for function annotations, but the semantics were deliberately left undefined. There has now been enough 3rd party usage for static type analysis that the community would benefit from a standard vocabulary and baseline tools w...

peps.python.org

 

 

'코딩 > 노트' 카테고리의 다른 글

[Function] 순수 함수  (0) 2025.04.07
[Python] Pickle  (2) 2024.11.26
[Linux] rm  (1) 2024.10.30
[Bash] 다중 스크립트 실행  (0) 2024.10.21
'코딩/노트' 카테고리의 다른 글
  • [Function] 순수 함수
  • [Python] Pickle
  • [Linux] rm
  • [Bash] 다중 스크립트 실행
CDeo
CDeo
잘 부탁해요 ~.~
  • 링크

    • Inter-link
    • LinkedIn
  • CDeo
    Hello World!
    CDeo
  • 공지사항

    • Inter-link
    • 분류 전체보기 (123)
      • 월간 (1)
        • 2024 (1)
      • 논문참여 (2)
      • 통계 & 머신러닝 (47)
        • 피처 엔지니어링 (2)
        • 최적화 (2)
        • 군집화 (5)
        • 공변량 보정 (4)
        • 생물정보통계 모델 (3)
        • 연합학습 (13)
        • 통계적 머신러닝 (13)
        • 논의 (0)
        • 구현 (2)
        • 스터디 (3)
      • 데이터 엔지니어링 (1)
        • 하둡 (1)
      • 코딩 (26)
        • 웹개발 (1)
        • 시각화 (2)
        • 이슈 (8)
        • 노트 (5)
        • PyTorch Lightning (5)
        • JAX (5)
      • 에너지 (2)
        • 뉴스 및 동향 (2)
        • 용어 정리 (0)
      • 기본 이론 (0)
        • 집합론 (0)
        • 그래프 이론 (0)
      • 약리학 (28)
        • 강의 (5)
        • ADMET parameter (16)
        • DDI (4)
        • DTI (0)
      • 생명과학 (1)
        • 분석기술 (1)
      • 일상 (15)
        • 연구일지 (3)
        • 생각 (8)
        • 영화 (1)
        • 동화책 만들기 (1)
        • 요리 (0)
        • 다이어트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.1
CDeo
[Python] Type Hint
상단으로

티스토리툴바