Python void 반환 유형 주석
python 3.x에서는 다음과 같은 함수의 반환 유형 주석을 사용하는 것이 일반적입니다.
def foo() -> str:
return "bar"
"void" 유형에 대한 올바른 주석은 무엇입니까?
다음 3가지 옵션을 고려 중입니다.
def foo() -> None:
- 논리 IMO가 아닙니다.왜냐하면
None
타입이 아닙니다.
- 논리 IMO가 아닙니다.왜냐하면
def foo() -> type(None):
- 내가 아는 최고의 구문을 사용하여
NoneType
,
- 내가 아는 최고의 구문을 사용하여
def foo():
- 명시적 반환 유형 정보를 생략합니다.
옵션 2가 가장 논리적인 것 같습니다만, 이미 1의 예를 몇 개 본 적이 있습니다.
이것은 PEP 484 -- Type Hents 문서와 직결됩니다.
유형 힌트에서 사용되는 경우 표현식은
None
와 동등하다고 간주됩니다.type(None)
.
그리고 대부분의 예에서 볼 수 있듯이None
반환 유형으로 지정됩니다.
TLDR: TLDR에 상당하는 관용어void
반환 유형 주석:-> None
.
def foo() -> None:
...
이것은, 이 기능이 없는 함수와 일치합니다.return
아니면 그냥 벌거숭이일 수도 있고return
까지 평가하다.None
.
def void_func(): # unannotated void function
pass
print(void_func()) # None
반환 유형을 생략해도 반환 값이 없는 것은 아닙니다.PEP 484에 따라:
선택한 함수의 경우 인수 및 반환 유형에 대한 기본 주석은 다음과 같습니다.
Any
.
즉, 이 값은 동적으로 입력된 것으로 간주되며 모든 동작을 스태틱하게 지원합니다.그것은 사실상 와 반대되는 의미이다.void
.
Python에서의 활자 힌트는 반드시 실제 활자를 필요로 하지 않습니다.예를 들어, 주석에는 다음과 같은 유형의 문자열이 사용될 수 있습니다.Union[str, int]
,Union[str, 'int']
,'Union[str, int]'
다양한 변형이 동등합니다.
마찬가지로 유형 주석None
「의」를 의미하는 것으로 간주되고 있다.NoneType
". 이것은 반환 유형 주석으로 가장 자주 나타나지만 반환 유형뿐만 아니라 다른 상황에서도 사용할 수 있습니다.
bar : None
def foo(baz: None) -> None:
return None
이는 일반 유형에도 적용됩니다.예를 들어,None
에Generator[int, None, None]
제너레이터가 값을 받지 않거나 반환하지 않음을 나타냅니다.
PEP 484는 다음과 같이 제안합니다.None
수단type(None)
, 후자의 형식을 명시적으로 사용하지 말아 주세요.type-hint 사양에는 다음과 같은 형식이 포함되지 않습니다.type(...)
이것은 엄밀히 말하면 런타임 표현이며, 그 지원은 전적으로 타입 체커에 달려 있습니다.mypy 프로젝트에서는, 다음의 서포트를 삭제할지를 검토하고 있습니다.type(None)
484에서도 제거해 주세요.
아니면 PEP 484를 업데이트해서
type(None)
유형으로 유효하며,None
철자만 맞습니까?그것을 할 수 있는 확실한 방법은 하나, 그리고 가급적 하나뿐이어야 합니다.
언급URL : https://stackoverflow.com/questions/36797282/python-void-return-type-annotation
'it-source' 카테고리의 다른 글
입력 필드에서 속성을 읽을 때 HTML 인코딩이 손실됨 (0) | 2022.11.29 |
---|---|
HMVC 패턴이란 무엇입니까? (0) | 2022.11.29 |
행을 MySQL 데이터베이스에 삽입하는 가장 효율적인 방법 (0) | 2022.11.29 |
그룹 기준과 함께 중위수 사용 (0) | 2022.11.29 |
Java 프로그램콘솔 출력을 여러 파일로 리다이렉트하려면 어떻게 해야 합니까? (0) | 2022.11.29 |