TLDR: el equivalente idiomático de una void
anotación de tipo de retorno es -> None
.
def foo() -> None:
...
Esto coincide con lo que evalúa una función sin return
o simplemente return
con 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, None
se 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 None
in Generator[int, None, None]
para indicar que un generador no toma ni devuelve valores.
Aunque PEP 484 sugiere que eso None
significa 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 mypy
proyecto 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 None
es la única ortografía correcta? Debe haber una, y preferiblemente solo una, forma obvia de hacerlo, etc.
--- JukkaL, 18 de mayo de 2018
void
tipo de retorno. Cualquier función (o rama en una función) sin unreturn
retorno explícitoNone
. Supongo que el OP entiende que, este comentario es principalmente para el beneficio de los futuros lectores ...