DEV Community

Robin Hafid Quintero Lopez
Robin Hafid Quintero Lopez

Posted on

¿Qué son los Type hints en Python? Mejorar la calidad de tu código y hazlo más legible

Python es un lenguaje de tipado dinámico, esto quiere decir que una variable puede tomar valores de distintos tipos.

Ejemplo

a = 1
b = a + 3
a = "a"
Enter fullscreen mode Exit fullscreen mode

Es conocido que Python durante el tiempo de ejecución no impone las anotaciones de tipado en funciones o variables. Sin embargo, puede ser utilizado por herramientas de terceros como validadores de tipado, IDEs (Entornos de Desarrollo Integrado), linters, entre otros.

El uso de type hints es como las pruebas unitarias, puede que para el desarrollador sea un esfuerzo extra y deba dedicar más tiempo, sin embargo, a largo plazo tiene sus ventajas.

Ventajas

Te permite ejecutar static checkers en tu código, mejora la legibilidad del mismo, al igual que te puede ayudar a entender más fácil las funciones (tipo de datos que se reciben en los parámetros y el tipo de retorno).

Ahora, si hay más personas aportando código en un proyecto, es fundamental poder entender de manera general y/o detallada lo que hace cada parte del mismo, entonces hacer uso de type hints es algo fundamental en proyectos grandes y pequeños.

Documentar el código se vuelve una tarea un poco más sencilla y la calidad de la documentación también mejora demasiado.

Ejemplo

a: int = 5
b: int = 3
c: int = a + b
Enter fullscreen mode Exit fullscreen mode

En el ejemplo anterior tenemos la siguiente estructura al usar type hints con variables.

<nombre de la variable>: <tipo de dato> = <valor>
Enter fullscreen mode Exit fullscreen mode

Pero también se puede hacer lo mismo con funciones o métodos.

Ejemplo

def hello_string(s: str) -> None:
    print(f"Hello {s}")
Enter fullscreen mode Exit fullscreen mode

El método anterior recibe como parámetro un string s y no retorna ningún valor, es decir None.

También se puede presentar que necesitamos que una función pueda retornar más de un tipo de dato o que un parámetro pueda ser de más de un tipo de dato, veámoslo en el siguiente ejemplo.

def hello_or_add(a: int | str) -> int | None:
    if type(a) is int:
        return a+1
    else:
        print(f"Hello {a}")
Enter fullscreen mode Exit fullscreen mode

Para poder definir más de un tipo de dato es necesario separarlos entre sí con pipes |, por todo lo demás sigue funcionando igual.

Top comments (2)

Collapse
 
juanfrank77 profile image
Juan F Gonzalez

Genial este post, Robin!

Collapse
 
rohaquinlop profile image
Robin Hafid Quintero Lopez

Gracias!