파이썬에서 a bool
또는 a 를 반환 할 수있는 함수가 있습니다 list
. 유형 힌트를 사용하여 반환 유형을 지정하는 방법이 있습니까?
예를 들어, 이것이 올바른 방법입니까?
def foo(id) -> list or bool:
...
파이썬에서 a bool
또는 a 를 반환 할 수있는 함수가 있습니다 list
. 유형 힌트를 사용하여 반환 유형을 지정하는 방법이 있습니까?
예를 들어, 이것이 올바른 방법입니까?
def foo(id) -> list or bool:
...
답변:
로부터 문서
수업
typing.Union
유니온 타입; Union [X, Y]는 X 또는 Y를 의미합니다.
따라서 여러 반환 데이터 형식을 나타내는 적절한 방법은
from typing import Union
def foo(client_id: str) -> Union[list,bool]
그러나 입력은 시행되지 않습니다. 파이썬은 계속해서 동적 타입 언어로 남아 있습니다. 주석 구문은 프로덕션 환경에 출시되기 전에 코드를 개발하는 동안 도움이되도록 개발되었습니다. PEP 484에서 "런타임에는 유형 검사가 수행되지 않습니다"라고 나와 있습니다.
>>> def foo(a:str) -> list:
... return("Works")
...
>>> foo(1)
'Works'
보시다시피 int 값을 전달하고 str을 반환합니다. 그러나는 __annotations__
해당 값으로 설정됩니다.
>>> foo.__annotations__
{'return': <class 'list'>, 'a': <class 'str'>}
를 통해하시기 바랍니다 이동 PEP 483 유형 힌트에 대한 자세한합니다. 또한 참조 파이썬 3.5 입력 힌트는 무엇입니까 ?
이것은 Python 3.5 이상 에서만 사용할 수 있습니다 . 이것은 PEP 484에 명확하게 언급되어 있습니다.
def foo(client_id: str) -> list or bool:
평가시 의 진술 은 def foo(client_id: str) -> list:
귀하가 원하는 것과 동일
하므로 귀하가 원하는 것을하지 않을 것입니다.
"A 또는 B"유형 힌트를 설명하는 기본 방법은 Union입니다 (Bhargav Rao 덕분에).
def foo(client_id: str) -> Union[list, bool]:
"어쨌든이 작업을 수행하고 싶은 이유"가되고 싶지는 않지만 2 가지 리턴 유형을 갖는 것이 원하는 것이 아닐 수도 있습니다.
특정 유형의 특수 오류 사례를 나타 내기 위해 부울을 반환하려면 대신 예외 사용을 고려하십시오. 부울을 특별한 값으로 반환하려면 빈 목록이 좋은 표현 일 수 있습니다. 당신은 또한 None
함께 반환 될 수 있음을 나타낼 수 있습니다Optional[list]
"여러 반환 값의 유형을 지정하는 방법"을 검색하기 위해 여기에 착륙 한 사람이있는 경우 Tuple[type_value1, ..., type_valueN]
from typing import Tuple
def f() -> Tuple[dict, str]:
a = {1: 2}
b = "hello"
return a, b