Para que sirve esto? (Python)

Iniciado por Panic0, 25 Mayo 2021, 17:27 PM

0 Miembros y 1 Visitante están viendo este tema.

Panic0

Hola, e visto que en muchos foros al momento de hacerse una función (o método en class), se usa "-> None", alguien me puede explicar para que sirve esto?






Gracias =)
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

engel lex

se usa para indicar el tipo de retorno de la función, sin embargo es meramente documental en el sentido que no cambia nada, si lo pones o lo quitas es opcional y el comportamiento del programa no variará (algunos validadores de código podrían detectar si el resultado cumple las condiciones exitosamente)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

DtxdF

Hola @Panic0

Se llaman sugerencias o concretamente hinting. Como menciona engel lex, son simplemente para indicar lo que debería retornar, y mejoran significativamente la calidad del código.

Pero Python los ignora, ya que si tenemos lo siguiente:

Código (python) [Seleccionar]
#!/usr/local/bin/python3.7

def foo() -> int:
    return "1"

if __name__ == "__main__":
    val = foo()
    print(type(val), val)


Se retornaría sin ningún inconveniente, pero lo ideal sería especificar el tipo de dato que en verdad vamos a generar (el cual sería str). No obstante, podría haber algún tipo de condición dentro de la función que permitiera no retornar nada (None) cuando no se cumpla o podría retornar cuando pase todo lo contrario, entonces el retorno sería opcional. Ahí entraría la librería typing para realizar sugerencias más potentes.

Código (python) [Seleccionar]
#!/usr/local/bin/python3.7

from typing import Optional

def foo(x: int) -> Optional[int]:
    if (x > 0):
        return x

if __name__ == "__main__":
    val = foo(0)
    print(type(val), val)


Lo siguiente imprimiría "<class 'NoneType'> None" porque el número no es mayor a 0.

Aunque Python lo ignore, es muy útil cuando está creando una librería, ya que cuando se usa la función help(...) dentro de la consola misma de Python, le mostraría al usuario qué debería retornar o qué debería pasarse en los argumentos.

También le podría interesar:

*.- https://www.python.org/dev/peps/pep-0585

~ DtxdF

Panic0

Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.