Tengo una función en python que puede devolver a bool
o a list
. ¿Hay alguna manera de especificar los tipos de retorno utilizando sugerencias de tipo?
Por ejemplo, ¿es esta la forma correcta de hacerlo?
def foo(id) -> list or bool:
...
python
python-3.x
return-type
type-hinting
python-3.5
Yahya Uddin
fuente
fuente
Respuestas:
De la documentación
Por lo tanto, la forma correcta de representar más de un tipo de datos de retorno es
Pero tenga en cuenta que la escritura no se aplica. Python continúa siendo un lenguaje de tipo dinámico. La sintaxis de la anotación se ha desarrollado para ayudar durante el desarrollo del código antes de su lanzamiento a producción. Como dice PEP 484, "no se realiza ninguna verificación de tipo en tiempo de ejecución".
Como puede ver, estoy pasando un valor int y devolviendo un str. Sin embargo
__annotations__
, se establecerá en los valores respectivos.Consulte PEP 483 para obtener más información sobre sugerencias de tipo. Consulte también ¿Qué son las sugerencias de tipo en Python 3.5 ?
Tenga en cuenta que esto solo está disponible para Python 3.5 y versiones posteriores. Esto se menciona claramente en PEP 484 .
fuente
La declaración
def foo(client_id: str) -> list or bool:
cuando se evalúa es equivalentedef foo(client_id: str) -> list:
y, por lo tanto, no hará lo que desea.La forma nativa de describir una pista de tipo "A o B" es Unión (gracias a Bhargav Rao):
No quiero ser el tipo "¿Por qué quieres hacer esto?", Pero tal vez tener 2 tipos de retorno no es lo que quieres:
Si desea devolver un bool para indicar algún tipo de caso de error especial, considere usar Excepciones en su lugar. Si desea devolver un valor bool como un valor especial, tal vez una lista vacía sería una buena representación. También puede indicar que
None
podría devolverse conOptional[list]
fuente
En caso de que alguien aterrice aquí en busca de "¿cómo especificar tipos de valores de retorno múltiples?", Use
Tuple[type_value1, ..., type_valueN]
Más información: https://code-examples.net/en/q/2651e60
fuente