2017-12-06 3 views
0

파이썬에서 나중에 Python에서 C로 코드를 이식하는 것을 쉽게하기 위해 타입 힌트를 배우기 시작했습니다. 타입 힌트에서 직접 타입을 사용하는 것과 대시 보드에서 정의 된 클래스를 사용하는 것 사이의 차이점이 무엇인지 궁금합니다. typing 모듈.타이핑 라이브러리 클래스와 파이썬 타입 힌트의 타입을 사용하면 어떤 이점이 있습니까?

예를 들어

, 유용 할 것이다

def somefn(a: list[int]) -> tuple[str, int]: 
    ... 

from typing import List, Tuple 

def somefn(a: List[int]) -> Tuple[str, int]: 
    ... 

그것은, Union 같은 몇 가지 클래스, Any, Callable처럼 보인다 Iterable의 차이,하지만 데이터 클래스의 유틸리티 파이썬에서 이미 키워드로 존재하는 타입은 나에게 불분명하다.

답변

1

합법적으로 평가할 수있는 특수 효과를 작성하는 데 유용합니다. list[int]은 실제로 실행하려고하면 폭발 할 것이고 typing.List[int]은 컨테이너와 내용 모두의 유형을 알고있는 새로운 제네릭 형식을 반환합니다. 이것은 일반의 전문 버전은 최상위 수준에 정의되어 type aliases의 경우에 특히 중요하다, 다음에 더 주석 재사용 :

Vector = List[float] 
def scale(scalar: float, vector: Vector) -> Vector: 
    ... 

합법적 인 반면 :

Vector = list[float] 
def scale(scalar: float, vector: Vector) -> Vector: 
    ... 

당신의 얼굴에 폭파. 형식이없는 별칭은 루트 또는 분기 유형이 아닌 "리프"유형으로 만 사용되므로 Text과 같은 예외는 유형이 아닌 것을 알 수 있습니다 (이식 관련 문제는 Text과 같습니다).

관련 문제