TLDR: el equivalente idiomático de una voidanotación de tipo de retorno es -> None.
def foo() -> None:
...
Esto coincide con lo que evalúa una función sin returno simplemente returncon None.
def void_func(): # unannotated void function
pass
print(void()) # None
Omitir el tipo de devolución no significa que no haya un valor de devolución. Según PEP 484 :
Para una función marcada, la anotación predeterminada para argumentos y para el tipo de retorno es Any.
Esto significa que el valor se considera de tipo dinámico y admite estáticamente cualquier operación . Ese es prácticamente el significado opuesto de void.
Las sugerencias de tipo en Python no requieren estrictamente tipos reales. Por ejemplo, las anotaciones pueden usar cadenas de nombres de tipo: Union[str, int], Union[str, 'int'], 'Union[str, int]'y varias variantes son equivalentes.
De manera similar, Nonese considera que la anotación de tipo significa "es de NoneType". Esto se puede usar no solo para tipos de devolución, aunque lo verá con más frecuencia allí:
bar : None
def foo(baz: None) -> None:
return None
Esto también se aplica a los tipos genéricos. Por ejemplo, puede usar Nonein Generator[int, None, None]para indicar que un generador no toma ni devuelve valores.
Aunque PEP 484 sugiere que eso Nonesignifica type(None), no debe utilizar la última forma explícitamente. La especificación de sugerencia de tipo no incluye ninguna forma de type(...). Esta es técnicamente una expresión en tiempo de ejecución, y su soporte depende totalmente del verificador de tipos. El mypyproyecto está considerando la posibilidad de eliminar el soporte para type(None)y sacarlo de 484 también.
¿O tal vez deberíamos actualizar PEP 484 para que no sugiera que type(None)es válido como tipo, y Nonees la única ortografía correcta? Debe haber una, y preferiblemente solo una, forma obvia de hacerlo, etc.
--- JukkaL, 18 de mayo de 2018
voidtipo de retorno. Cualquier función (o rama en una función) sin unreturnretorno explícitoNone. Supongo que el OP entiende que, este comentario es principalmente para el beneficio de los futuros lectores ...