Sam & Max: Python, Django, Git et du cul

Deux développeurs en vadrouille qui se sortent les doigts du code

Un décorateur pour accepter les callbacks en Python

Photo d'un petit serpent qui tient au creux de la main

Un des événements auxquels on veut réagir le plus souvent, c’est l’appel d’une fonction, donc en gros être capable de fournir un callback quand on fonction est appelée. On peut bien entendu coder la logique du callback dans chaque fonction et méthode que l’on met en œuvre, mais avec un peu d’astuce, on peu trouver une solution générique qui va couvrir Pareto des besoins.

Batbelt, la lib des petits outils Python qui vont bien

Photo d'une voiture à la peinture réfléchissante

A force de coder plein de projets, il y a des opérations qui reviennent très souvent. Ces traitements sont petits et complètement sans relation, difficile d’en faire quelque chose. J’ai tout de même finit par en faire un lib, batbelt, qui au final n’est qu’une grosse collections de snippets que j’utilise régulièrement.

Le pattern observer en utilisant des décorateurs

Schéma détaillant le phénomène de l'érection masculine

Nous avons vu précédemment que les décorateurs permettaient d’exécuter du code avant et après une fonction, sans modifier la fonction. La plupart du temps on retourne ainsi une nouvelle fonction embarquant un nouveau code.

Mais il existe d’autres usages pour les décorateurs, et notamment un qui est au cœur du fonctionnement de django-quicky: l’abonnement.

Mémoization d’une fonction Python

Dessin humoristique dans lequel Moïse fait en blague en fendant l'eau devant son partenaire de pèche

La mémoization est une forme de mise en cache, elle consiste à cacher le résultat d’une fonction afin que les appels successifs avec des paramètres identiques utilisent le cache plutôt que de calculer à nouveau les données.