decorator

Français : décorateur

Concept de composition de fonctions

Dans une déclaration de fonction, voir syntaxe ci-dessous, une définition de fonction peut être précédée d'un ou plusieurs décorateurs (en anglais, on dit wrapped - enveloppé).

funcdef ::= [decorators] "def" funcname "(" [parameter_list] ")" ["->" expression] ":" suite

On reconnait le décorateur du fait qu'il est précédé du caractère @ et est sur la ligne qui précède la définition de fonction. Un décorateur est lui-même une fonction qui reçoit en paramètre la fonction qui suit et rend une fonction.

Le mécanisme de décoration correspond à la notion de composition de fonctions : decorateur °funcname

decorator ::= "@" dotted_name ["(" [parameter_list [","]] ")"] NEWLINE

De la même manière, une définition de classe peut être précédée de décorateurs, le tout rendant une classe.

Exemple 1

Un décorateur qui permet de savoir combien de fois la fonction qu'elle décore est appelée.

Exemple 2.

En Sage, utilisation d'un wrapper pour lancer en parallèle l'exécution d'une fonction


Exemples avec property, deleter, setter

» Glossaire du langage python