PengTory

[Python] Typing 모듈 본문

Python 이것저것

[Python] Typing 모듈

펭토리 2022. 10. 26. 00:16

LeetCode 문제를 풀던중 아래와 같은 형식으로 양식이 주어진 것을 보았다.

Optional[TreeNode] 와 관련해서 찾아보던 중 파이썬에 Typing이라는 것이 있는 것을 알고 정리해보았다.

class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:

 

Typing

파이썬은 변수의 타입을 일일이 명시하지 않아도 되고 특정 변수의 타입이 중간에 바뀌어도 되는 동적언어이다.

다른 언어에 비해 배우기 쉽고 빠르게 프로그래밍이 가능하다는 장점이 있지만, 잘못된 타입을 사용하여 예상치 못한 에러를 마주할 수 있다는 단점이 있다.

이러한 문제를 해결하기 위해 최근 이러한 동적 언어들에 타입을 명시하고자 하는 수요가 늘고 있다. 파이썬에서는 Typing이 이에 해당하며 버전 3.5부터 지원한다.

 

먼저 파이썬에서 타입 힌트를 사용하기 위해서는 typing 모듈을 import 해야한다.

 

- List, Dict, Tuple, Set

타입 어노테이션을 사용하다 보면 파이썬 내장 자료 구조에 대한 타입 명시가 필요할 때가 있다. 이때는 typing 모듈이 제공하는 List,Dict, Tuple, Set를 사용해 타입 어노테이션을 추가하면 된다

from typing import List, Dict, Tuple, Set

nums: List[int] = [1,2,3,4,5]
countries: Dict[str, str] = {"KR": "Seoul", "CN": "Beijing"}
user: Tuple[int, str, bool] = (1, "minsoo", True)
chars: Set[str] = {"a", "b", "c"}

 

- Final

재할당이 불가능한 변수, 즉 상수에 대한 어노테이션을 추가할 때는 Final을 사용한다.

from typing import Final

TIME_OUT: Final[int] = 7

 

- Union

여러 개의 타입이 허용될 수 있는 상화에서는 Union을 사용할 수 있다.

from typing import Union

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

 

- Optional

None이 허용되는 함수의 매개 변수에 대한 타입을 명시할 때 유용하다.

class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:

'Python 이것저것' 카테고리의 다른 글

[Python] list 원하는 갯수대로 자르기  (0) 2023.01.17