함수가 있다고 가정합니다.
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 |
댓글