Anotaciones De Tipo En Python Pt2

Fecha de publicaci贸n: 13 Marzo 2021
Tiempo de lectura: 2 min.
Premium: False
N煤mero de visitas: 483


En una entrega anterior hablamos de sobre las anotaciones en Python, un feature del lenguaje que nos permite comprender, de mejor manera, el c贸digo que estamos creando, pudiendo as铆 "definir" los tipos de datos para nuestras variables. 馃嵒

Las anotaciones son una gran herramienta que el lenguaje nos provee, no solo facilitan la lectura del c贸digo, si no que hace que este sea f谩cil de testear, y por supuesto mantener. Inclusive, utilizando anotaciones, los desarrolladores que vengan de lenguajes con un tipado est谩tico, por ejemplo Java, C, C# etc... se les ser谩 mucho m谩s ameno integrarse a proyectos escritos en Python. 馃悕

Si bien, en ese post no hicimos uso de ning煤n tipo m贸dulo o librer铆a externa para poder definir los tipos de datos, creo necesario expliquemos en detalle el m贸dulo typing de la biblioteca standard de Python. M贸dulo con el cual podremos definir tipos de colecciones para las anotaciones. Ya sean listas, tuplas, diccionarios, sets, etc...

Veamos.

M贸dulo typing

Comencemos con las colecciones de tipo listas. Y para ello usaremos la clase List. Aqu铆 un ejemplo.

from typing import List

alumnos: List[str] = ['Eduardo', 'Raquel', 'Fernando']

El m贸dulo typing, como lo mencionamos anteriormente, se encuentra en la biblioteca standard de Python, por lo tanto no ser谩 necesario instalar absolutamente nada.

Para las tupla y los diccionarios ser铆a exactamente igual, solo que utilizando las clase Tuple y Dict respectivamente.

from typing import Dict
from typing import Tuple

configuraciones: Tuple[str] = ['localhost, 'root', '3306']

# Definimos los tipos para las llaves y los valores a almacenar
usuarios: Dict[str, int] =  {'eduardo': 1, 'Raquel': 2, 'Fernando': 3}

Algo interesante del m贸dulo typing es la capacidad que tenemos de poder definir de forma concreta cada uno de los items para, ya sea nuestra tupla o lista. Logramos esto utilizando la clase Union. 馃コ

from typing import Dict
from typing import Tuple
from typing import Union

configuraciones: Tuple[Union[str, str, bool, int] ] = ['localhost, 'root', true, 3306]

Para este ejemplo indicamos que los 2 primeros valores para nuestra tupla ser谩n de tipo string, el tercer valor ser谩 de tipo boolean, y por 煤ltimo, el cuarto valor ser谩 de tipo entero.

En dado caso no sepamos los tipos de datos que pueda almacenar nuestra colecci贸n, haremos uso de la clase Any.

from typing import List
from typing import Any

listado: List[Any] = [1, 2, 3, '4', True, False, 'localhost']

Con esto indicamos que ahora nuestra lista puede almacenar cualquier tipo de datos.

Por supuesto, la clase Any tambi茅n puede ser utilizada para las funciones. 馃槑

from typing import Any

def foo(item: Any) -> Any:
    item.bar()

Nuevos tipos

Algo super cool del m贸dulo typing, es la posibilidad de definir nuevos tipos de datos de datos. Con esto seremos aun m谩s expl铆citos sobre que tipo de valores podr谩n, o no, almacenar nuestras variables.

Veamos un ejemplo, definamos el tipo de datos id.

from typing import NewType

ID = NewType('id', int)
user_id = ID(1)

Para poder crear un nuevo tipo de datos haremos uso de la clase NewType.

En este ejemplo creamos el nuevo tipo de dato id, que podr谩 almacenar un valor entero. De igual forma definimos la variable _user_id_ de tipo id.

Un ejemplo de como podemos implementar nuestros nuevos tipos de datos pudiera ocurrir en los par谩metros de nuestras funciones.

from typing import NewType

ID = NewType('id', int)

def search_user(user_id: int) -> Any:
    # Nuestro super algoritmo de bisqueda
    pass

user_id = ID(1)
search_user(user_id)

En este caso indicamos que la funci贸n _search_user_ recibir谩 como par谩metro un valor de tipo id.

Que bien, si somos sinceros, podemos pasar de crear nuestros propios tipos de datos, ya que, literal, si accedemos al tipo, obtendremos como resultado el tipo base que hemos definido. 馃槸

>>> type(user_id)
int
M谩s Tips y Ejercicios 馃悕

Adquiere una subscripci贸n PyWombat por tan solo $3 USD. al mes.

Conoce los beneficios de ser usuario premium:
Niveles desbloqueados: Ten accesos a todos los niveles de ejercicios. 馃敁
Nuevo l铆mite: Incrementa tu l铆mite de ejercicios por semana. 馃殌
Contenido 煤nico: Recibe semanalmente recursos exclusivos de Python (Videos, Art铆culos y Capitulos del libro PyWombat, comienza como desarrollador Python. 馃悕