TLDR: o equivalente idiomático de uma void
anotação de tipo de retorno é -> None
.
def foo() -> None:
...
Isso corresponde a uma função sem return
ou apenas uma return
avaliação None
.
def void_func(): # unannotated void function
pass
print(void()) # None
Omitir o tipo de retorno não significa que não haja valor de retorno. Conforme PEP 484 :
Para uma função marcada, a anotação padrão para argumentos e para o tipo de retorno é Any
.
Isso significa que o valor é considerado digitado dinamicamente e oferece suporte estático a qualquer operação . Esse é praticamente o significado oposto de void
.
A sugestão de tipo em Python não exige estritamente tipos reais. Por exemplo, as anotações podem usar cordas de nomes de tipo: Union[str, int]
, Union[str, 'int']
, 'Union[str, int]'
e diversas variantes são equivalentes.
Da mesma forma, a anotação de tipo None
é considerada como significando "é de NoneType
". Isso pode ser usado não apenas para tipos de retorno, embora você o veja com mais frequência lá:
bar : None
def foo(baz: None) -> None:
return None
Isso também se aplica a tipos genéricos. Por exemplo, você pode usar None
in Generator[int, None, None]
para indicar que um gerador não recebe ou retorna valores.
Embora o PEP 484 sugira esses None
meios type(None)
, você não deve usar a última forma explicitamente. A especificação de sugestão de tipo não inclui nenhuma forma de type(...)
. Esta é tecnicamente uma expressão de tempo de execução e seu suporte depende inteiramente do verificador de tipo. O mypy
projeto está considerando a possibilidade de remover o suporte para type(None)
e remova-o 484 também.
Ou talvez devêssemos atualizar o PEP 484 para não sugerir que type(None)
é válido como um tipo e None
é a única grafia correta? Deve haver uma - e de preferência apenas uma - maneira óbvia de fazer isso, etc.
--- JukkaL, 18 de maio de 2018
void
tipo de retorno. Qualquer função (ou ramificação em uma função) sem umreturn
retorno explícitoNone
. Presumo que o OP entenda isso, este comentário é principalmente para o benefício dos futuros leitores ...