Saltar a contenido

00 · Mecanismos de Python necesarios para el curso

Mecanismos de Python necesarios para el curso

Empieza por el despacho de operadores, los decoradores y las dataclasses para saber cómo una expresión llega a un método de la biblioteca.

Antes de este capítulo

Ya sabes leer funciones, clases, condiciones y anotaciones de tipos sencillas.

Al terminar podrás
  • explicar con tus palabras la definición matemática de «Mecanismos de Python necesarios para el curso»
  • señalar cómo se representa esa definición en datos de Python
  • predecir una ejecución pequeña a partir del código real
Definición matemática

En Python, `a + b` y `a == b` solicitan `__add__` y `__eq__` a los objetos. Un decorador recibe y sustituye un objeto función al definirlo.

Representación de datos

Una dataclass congelada guarda valores matemáticos inmutables. Internamente, un método con `@log` devuelve un resultado y un mensaje diferido; el envoltorio solo expone el resultado.

Implementación en Python

`+` → `__add__`; `==` → `__eq__`; `@log` → `inner`

Implementación y pruebas para leer junto al capítulo

peano/utils.py · tests/test_utils.py

Definición matemática

Definición matemática

En Python, a + b y a == b solicitan __add__ y __eq__ a los objetos. Un decorador recibe y sustituye un objeto función al definirlo.

Representación de datos

Representación de datos

Una dataclass congelada guarda valores matemáticos inmutables. Internamente, un método con @log devuelve un resultado y un mensaje diferido; el envoltorio solo expone el resultado.

Implementación en Python

Implementación en Python

inner llama al método original, separa (result, message), registra el mensaje si corresponde y devuelve result; @wraps conserva los metadatos.

La correspondencia exacta usada en el curso:

`+` → `__add__`; `==` → `__eq__`; `@log` → `inner`

Traza de ejecución

Traza de ejecución

El cuerpo del método termina antes de que el envoltorio reciba el mensaje. Por eso las llamadas recursivas internas se registran primero.

Predicción antes de ejecutar

Indica qué código atenderá `structural_str()` y `+`, y escribe las dos líneas que esperas.

Experimento · Mecanismos de Python necesarios para el curso Sin ejecutar
⌘ / Ctrl + Enter
Salida
Escribe primero tu predicción y después ejecuta.

Comprobación con pruebas

Comprobación con pruebas

Las pruebas protegen el resultado, la firma pública y la evaluación diferida del mensaje.

Alcance y límites

Alcance y límites

No repetimos la sintaxis elemental; explicamos la metaprogramación que resulta esencial para leer esta biblioteca.

¿Qué afirmación describe correctamente la implementación de «Mecanismos de Python necesarios para el curso»?