일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바스크립트
- 데이터베이스
- 소프트웨어
- 네트워크보안
- 보안
- 코딩
- 컴퓨터과학
- I'm Sorry
- 딥러닝
- 빅데이터
- 데이터구조
- 컴퓨터비전
- 컴퓨터공학
- Yes
- 사이버보안
- 프로그래밍언어
- 소프트웨어공학
- 클라우드컴퓨팅
- 데이터과학
- 알고리즘
- 버전관리
- 인공지능
- 머신러닝
- 웹개발
- 2
- 프로그래밍
- 자료구조
- 파이썬
- 네트워크
- 데이터분석
- Today
- Total
스택큐힙리스트
타입 힌트로 "nullable" 반환 타입을 어떻게 지정할까요? 본문
만약 함수가 있다고 가정해보세요:
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 하는 대상에 대해?
답변 1
당신은 Optional을(를) 찾고 있습니다.
당신의 반환 유형은 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)] 로 변환되어 여기에서 type 를 사용할 필요가 없습니다.
시각적으로는 차이가 있을 수 있지만, 프로그램적으로는 두 경우 모두 결과가 정확히 동일합니다. get_some_date.__annotations__ * 에 저장된 유형은 Union[datetime.datetime, NoneType]입니다.
>>> 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__ 속성을 가져옵니다.
답변 2
nullable 반환형을 type hints로 지정하는 방법에 대해 알아보겠습니다.nullable 반환형은 함수가 null 값을 반환할 수 있는 경우에 사용됩니다. 이는 종종 올바르지 않은 값이 반환되는 것을 방지하고 예상치 못한 상황을 처리하는 데 도움이 됩니다. 이를 type hints로 지정하는 방법은 아래와 같습니다.
먼저, 반환 형식으로 Union[None, 반환 형식]을 사용합니다. 이를 통해 반환 값이 null 일 수 있음을 나타낼 수 있습니다. 예를 들어, 반환 값이 str 또는 null인 경우 다음과 같이 type hints를 사용할 수 있습니다.
```python
def validate_email(email: str) -> Union[None, str]:
...
```
위의 예제는 validate_email 함수가 str 또는 null 값을 반환할 수 있음을 나타냅니다.
그러나 nullable 반환형은 항상 필요하지는 않습니다. 반환 값이 항상 null 이 아니라면 Optional[반환 형식]을 사용할 수 있습니다. Optional[반환 형식]은 Union[None, 반환 형식]과 동일한 의미를 가집니다. 예를 들어, 반환 값이 str 또는 null 이 아닌 경우 다음과 같이 type hints를 사용할 수 있습니다.
```python
from typing import Optional
def get_name(id: int) -> Optional[str]:
...
```
위의 예제는 get_name 함수가 str 또는 null 값을 반환하지 않으며, 반환 값이 str 이거나 없을 수 있음을 나타냅니다.
이상적으로, nullable 반환형이 필요한 경우 Union[None, 반환 형식]을 사용하고 그렇지 않으면 Optional[반환 형식]을 사용하면 됩니다. 이를 통해 함수의 반환 값이 예측 가능하고 예상치 못한 오류를 방지할 수 있습니다.
이상으로, nullable 반환형을 type hints로 지정하는 방법에 대해 알아보았습니다. 이를 통해 보다 안전하고 정확한 코드를 작성할 수 있습니다.