TLDR : void
반환 유형 주석 의 관용적 등가물 은 -> None
.
def foo() -> None:
...
이것은 함수가 return
없거나 맨손으로 return
평가되는 것과 일치합니다 None
.
def void_func():
pass
print(void())
반환 유형을 생략 한다고해서 반환 값이 없다는 의미 는 아닙니다 . 당 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
in Generator[int, None, None]
을 사용 하여 생성기가 값을 가져 오거나 반환하지 않음을 나타낼 수 있습니다 .
PEP 484가 제안에도 불구하고 None
수단을 type(None)
, 당신은 안 명시 적으로 후자의 양식을 사용합니다. 유형 힌트 사양은 않습니다 하지 어떤 형태를 포함한다 type(...)
. 이것은 기술적으로 런타임 표현식이며 지원은 전적으로 유형 검사기에 달려 있습니다. 이 mypy
프로젝트는 484에 대한 지원 을 type(None)
제거하고 제거하는 것을 고려하고 있습니다.
아니면 PEP 484를 업데이트 type(None)
하여 유형으로 유효 None
하고 유일한 철자 임을 제안하지 않아야 할까요? 한 가지, 바람직하게는 한 가지 분명한 방법이 있어야합니다.
--- JukkaL, 2018 년 5 월 18 일
void
반환 유형 이있는 함수가 없습니다 . 명시 적없는 모든 함수 (또는 함수의 분기)는를return
반환None
합니다. 나는 OP가 이해한다고 가정한다.이 코멘트는 대부분 미래 독자의 이익을위한 것이다 ...