Programing

활자를 사용하여 여러 개의 반환 유형을 지정하는 방법

c10106 2022. 4. 7. 20:23
반응형

활자를 사용하여 여러 개의 반환 유형을 지정하는 방법

나는 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

반응형