활자를 사용하여 여러 개의 반환 유형을 지정하는 방법
나는 python에서 a를 반환할 수 있는 기능을 가지고 있다.bool
또는 alist
.유형 힌트를 사용하여 반환 유형을 지정할 수 있는 방법이 있는가?
예를 들어, 이렇게 하는 것이 올바른 방법인가?
def foo(id) -> list or bool:
...
계급
typing.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'
보시다시피 나는 인트 값을 전달하고 스트릿을 반환하고 있다.하지만, 그__annotations__
각각의 값으로 설정될 것이다.
>>> foo.__annotations__
{'return': <class 'list'>, 'a': <class 'str'>}
유형 힌트에 대한 자세한 내용은 PEP 483을 참조하십시오.참고 항목Python 3.5의 유형 힌트란?
Python 3.5 이상에서만 사용할 수 있다는 점에 유의하십시오.이것은 PEP 484에서 분명하게 언급되어 있다.
파이톤 3.10 이후로는 이 연합을 대표하는 새로운 방법이 있다.조합 유형 참조:
유니언 개체는 여러 유형의 개체에서 |(비트 또는) 작업 값을 보유한다.이러한 형식은 주로 형식 주석을 목적으로 한다.조합형 표현식은 타이핑에 비해 클리어형 암시 구문을 가능하게 한다.유니온.
우리가 알 수 있듯이, 이것은 정확히 같은 것이다.typing.Union
이전 버전에서이 표기법을 사용하도록 이전 예를 수정할 수 있다.
def foo(client_id: str) -> list | bool:
"다중 리턴 값의 유형을 지정하는 방법"을 검색하여 이곳에 착륙한 사람이 있는 경우, 다음을 사용하십시오.Tuple[type_value1, ..., type_valueN]
from typing import Tuple
def f() -> Tuple[dict, str]:
a = {1: 2}
b = "hello"
return a, b
추가 정보:다중 반환 값 유형에 주석을 추가하는 방법
성명서def foo(client_id: str) -> list or bool:
평가된 값이 다음과 같을 때def foo(client_id: str) -> list:
그러므로 네가 원하는 것을 하지 않을 것이다.
"A 또는 B" 유형의 힌트를 설명하는 기본 방법은 유니언(Bhargav Rao 덕분에):
def foo(client_id: str) -> Union[list, bool]:
또는 Python 3.10 이상부터 시작하여 다음 기능을 사용한다.|
연산자:
def foo(client_id: str) -> list | bool:
난 '어쨌든 왜 이러고 싶어'라는 남자가 되고 싶진 않지만, 2가지 리턴 타입이 네가 원하는 게 아닐지도 몰라.
특정 오류 사례 유형을 나타내는 bool을 반환하려면 예외를 대신 사용하십시오.만약 당신이 어떤 특별한 값으로 bool을 반환하고 싶다면, 아마도 빈 리스트가 좋은 표현이 될 것이다.라고도 표시할 수 있다.None
로 돌려받을 수 있다.Optional[list]
Python 3.10 (사용)|
예: 단일 인맥(人수)은 수수(수水)의 단일 인맥(仁인)은 수긍(:수)의 예:int
또는str
그리고 둘 중 하나를 반환한다.int
또는str
:
def func(arg: int | str) -> int | str:
^^^^^^^^^ ^^^^^^^^^
type of arg return type
Python 3.5 - 3.9 (사용)typing.Union
):
from typing import Union
def func(arg: Union[int, str]) -> Union[int, str]:
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
type of arg return type
의 특별한 경우를 위해X | None
사용할 수 있다.
기본 Python은 다음과 같이 간단히 한다.
def foo(x: (list, str)):
pass
참조URL: https://stackoverflow.com/questions/33945261/how-to-specify-multiple-return-types-using-type-hints
'Programing' 카테고리의 다른 글
Reducx - 스프레드 연산자를 사용하여 깊이 중첩된 스토어 소품 업데이트 (0) | 2022.04.07 |
---|---|
대응: TypeError: 정의되지 않았거나 null을 개체로 변환할 수 없음 (0) | 2022.04.07 |
iPad에서 네이티브 대응 - 오류 - 개발 서버에 연결할 수 없음 (0) | 2022.04.07 |
경로 문자열을 Vue 라우터 매개 변수에 연결 (0) | 2022.04.07 |
v-data-table에 클릭 이벤트를 추가하는 방법 (0) | 2022.04.06 |