Sugerencias de tipo o type hints

Desde la versión 3.5 de Python existe algo que se llama type hints y que nos permiten poner tipos a variables, listas, funciones, etc.

Sin embargo tal como el nombre indica es solo una sugerencia y por tanto el interprete no las va a tener en cuenta.

Veamos un ejemplo para ver de que hablamos:

numero: int = 10
print(numero)

cadena: str = "Esto es una cadena de texto"
print(cadena)

def mi_funcion(int: num, str: cad)-> bool:
    print("El número es:",num,"y el texto:", cad)
    return True
resultado = mi_funcion(numero, cadena)
print(resultado)

Al poner numero:int = 10 estamos indicando al código que la variable número tiene asignado el valor 10 y además sugerimos que es del tipo entero.

En la siguiente línea de asignación cadena:str=”Esto es una cadena” hacemos exactamente lo mismo, sugiriendo que la variable cadena es del tipo string.

En nuestra función llamada mi_funcion indicamos el tipo int para num y str para cad y el valor que devuelve la función debería ser del tipo booleano, se usa -> para indicar el tipo de valor que retorna la función.

¿Por qué decimos que es una sugerencia?, pues porque Python no va a hacer ninguna comprobación y por tanto podemos indicar que una variable es del tipo int y posteriormente asignarle un valor de tipo float o string de la manera habitual.

El runtime de Python no impone anotaciones de función y tipo de variable. Pueden ser utilizados por herramientas de terceros, como verificadores de tipo, IDE, linters, etc.

https://docs.python.org/3/library/typing.html

¿Y entonces para qué sirve?, hay varias respuestas, desde mi punto de vista, pese al incremento en el código escrito, nuestro código queda mas claro, ya que sabemos de antemano los tipos de variables y en nuestra mano queda usarlas en consecuencia. Por otra parte, podemos hacer uso de aplicaciones como mypy http://www.mypy-lang.org/ entre otras para revisar los tipos.

Para instalar mypy usamos pip:

pip install mypy

Para usar mypy y revisar el script python escribimos:

mypy [opciones] nombre_fichero.py

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *