TLDR: o equivalente idiomático de uma voidanotação de tipo de retorno é -> None.
def foo() -> None:
...
Isso corresponde a uma função sem returnou apenas uma returnavaliaçã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 Nonein Generator[int, None, None]para indicar que um gerador não recebe ou retorna valores.
Embora o PEP 484 sugira esses Nonemeios 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 mypyprojeto 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
voidtipo de retorno. Qualquer função (ou ramificação em uma função) sem umreturnretorno explícitoNone. Presumo que o OP entenda isso, este comentário é principalmente para o benefício dos futuros leitores ...