Aller au contenu

00 · Mécanismes Python nécessaires au cours

Mécanismes Python nécessaires au cours

Commencez par le dispatch des opérateurs, les décorateurs et les dataclasses pour suivre une expression jusqu’à la méthode de la bibliothèque.

Avant ce chapitre

Vous savez déjà lire fonctions, classes, conditions et annotations de types simples.

À la fin, vous pourrez
  • expliquer avec vos mots la définition mathématique de « Mécanismes Python nécessaires au cours »
  • indiquer comment elle est représentée dans les données Python
  • prédire une petite exécution à partir du code réel
Définition mathématique

En Python, `a + b` et `a == b` sollicitent `__add__` et `__eq__`. Un décorateur reçoit et remplace un objet fonction lors de sa définition.

Représentation des données

Une dataclass gelée conserve des valeurs immuables. En interne, une méthode sous `@log` renvoie résultat et message différé ; l’enveloppe n’expose que le résultat.

Implémentation Python

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

Implémentation et tests à lire avec ce chapitre

peano/utils.py · tests/test_utils.py

Définition mathématique

Définition mathématique

En Python, a + b et a == b sollicitent __add__ et __eq__. Un décorateur reçoit et remplace un objet fonction lors de sa définition.

Représentation des données

Représentation des données

Une dataclass gelée conserve des valeurs immuables. En interne, une méthode sous @log renvoie résultat et message différé ; l’enveloppe n’expose que le résultat.

Implémentation Python

Implémentation Python

inner appelle la méthode, sépare (result, message), journalise si nécessaire et renvoie result ; @wraps conserve les métadonnées.

La correspondance exacte utilisée dans ce cours:

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

Trace d’exécution

Trace d’exécution

Le corps finit avant que l’enveloppe reçoive le message ; les appels récursifs internes sont donc journalisés en premier.

Prédiction avant exécution

Indiquez le code appelé par `structural_str()` et `+`, puis notez les deux lignes attendues.

Expérience · Mécanismes Python nécessaires au cours Non exécuté
⌘ / Ctrl + Enter
Sortie
Écrivez d’abord votre prédiction, puis exécutez.

Vérification par les tests

Vérification par les tests

Les tests protègent le résultat, la signature publique et l’évaluation différée du message.

Portée et limites

Portée et limites

La syntaxe élémentaire n’est pas reprise ; seule la métaprogrammation essentielle à cette bibliothèque est expliquée.

Quelle affirmation décrit correctement l’implémentation de « Mécanismes Python nécessaires au cours » ?