Módulo Typing de Python

El módulo typing proporciona anotaciones de tipo para argumentos de funciones, valores de retorno y estructuras de datos.

from typing import TypedDict

Las anotaciones de tipo no cambian cómo Python ejecuta tu programa. Ayudan a editores, linters y lectores a entender qué tipo de valores espera tu código.

Anotar firmas de funciones

def greet(name: str) -> str:
    return f'Hello {name}'

print(greet('Ada'))
Hello Ada

La anotación name: str significa que la función espera una cadena. La anotación -> str significa que debe devolver una cadena.

Tipos de contenedor comunes

Usa anotaciones de tipo para describir la forma de tus datos.

def average(values: list[float]) -> float:
    return sum(values) / len(values)

print(average([1.0, 2.0, 3.0]))
2.0

Las anotaciones con estilo list[str] requieren Python 3.9 o superior.

Valores opcionales

Usa | None cuando un valor pueda faltar.

def find_user(user_id: int) -> str | None:
    if user_id == 1:
        return 'Ada'
    return None

print(find_user(1))
print(find_user(2))
Ada
None

La sintaxis de unión X | Y requiere Python 3.10 o superior.

TypedDict

TypedDict describe objetos tipo diccionario con claves fijas.

from typing import TypedDict

class User(TypedDict):
    name: str
    active: bool

user: User = {'name': 'Ada', 'active': True}
print(user['name'])
Ada

Alias de tipos

Un alias de tipo da un nombre legible a un tipo más complejo.

Coordinates = tuple[float, float]

def show_location(point: Coordinates) -> str:
    return f'{point[0]}, {point[1]}'

print(show_location((12.5, 35.8)))
12.5, 35.8

Enlaces relacionados