함수가 있다고 가정합니다.
def get_some_date(some_argument: int=None) -> %datetime_or_None%:
    if some_argument is not None and some_argument == 1:
        return datetime.utcnow()
    else:
        return None
 None 이 될 수있는 항목의 반환 유형을 어떻게 지정합니까?
해결 방법
반환 유형은  datetime  ( datetime.utcnow () 에서 반환 됨) 또는  None  일 수 있으므로  Optional [datetime ]  :
from typing import Optional
def get_some_date(some_argument: int=None) -> Optional[datetime]:
    # as defined
입력에 대한 문서에서  Optional 은 다음의 약자입니다.
Optional [X]은Union [X, None]과 동일합니다.
여기서  Union [X, Y] 는  X  또는  Y  유형의 값을 의미합니다.
다른 사람들이  Optional 을 우연히 발견하고 그 의미를 깨닫지 못할 수 있다는 우려 때문에 명시하고 싶다면 항상  Union 을 사용할 수 있습니다.
from typing import Union
def get_some_date(some_argument: int=None) -> Union[datetime, None]:
그러나 이것이 좋은 생각이라고 생각하지 않습니다.  Optional 은 표시 이름이며 몇 번의 키 입력을 저장합니다.
 @ Michael0x2a의 주석에서 지적했듯이  Union [T, None] 은  Union [T, type (None)] 으로 변환되므로 <를 사용할 필요가 없습니다. 여기에 code> type 을 입력하세요. 
시각적으로는 다를 수 있지만 프로그래밍 방식으로 두 경우 모두 결과는  정확히 동일 입니다.  Union [datetime.datetime, NoneType] 은  get_some_date .__ annotations __   * 에 저장된 유형입니다.
>>> from typing import get_type_hints
>>> print(get_type_hints(get_some_date))
{'return': typing.Union[datetime.datetime, NoneType],
 'some_argument': typing.Union[int, NoneType]}
 *   typing.get_type_hints 를 사용하여 개체의  __ annotations __  속성을 직접 액세스하는 대신 가져옵니다.
참조 페이지 https://stackoverflow.com/questions/39429526
'파이썬' 카테고리의 다른 글
| 파이썬 Python unittest를 사용하여 파일을 작성하는 함수의 단위 테스트를 수행하는 방법 (0) | 2020.10.30 | 
|---|---|
| 파이썬 UnicodeEncodeError : 'latin-1'코덱은 문자를 인코딩 할 수 없습니다. (0) | 2020.10.30 | 
| 파이썬 Python의 바이너리 파일에서 데이터 읽기 및 해석 (0) | 2020.10.30 | 
| 파이썬 Pandas에서 null 값을 삭제하는 방법은 무엇입니까? (0) | 2020.10.30 | 
| 파이썬 아나콘다의 기본 파이썬 경로를 설정하는 방법은 무엇입니까? (0) | 2020.10.30 | 
댓글