Contenu du cours
Techniques Python Intermédiaires
Techniques Python Intermédiaires
Syntaxe
Le décorateur fonctionne en prenant une fonction comme argument et en l'exécutant ensuite dans une fonction wrapper.
Pour appliquer un décorateur, on peut utiliser le symbole @ suivi du nom de la fonction décoratrice, placé juste au-dessus de la fonction qui doit être modifiée. Voici un exemple :
Dans cet exemple, les deux méthodes atteignent le même résultat. La première méthode, utilisant le symbole @
, est une manière plus lisible et concise d'appliquer les decorators
, souvent appelée "sucre syntaxique".
Il est typique d'utiliser une fonction imbriquée nommée wrapper
dans les décorateurs.
Décorateurs Flexibles : Accommoder Divers Arguments de Fonction
Les fonctions nécessitent souvent un nombre variable d'arguments.
Pour développer un décorateur capable d'être appliqué à des fonctions avec des nombres d'arguments différents, il est efficace d'utiliser *args
et **kwargs
dans la fonction wrapper()
.
def indicate(func): def wrapper(*args, **kwargs): print("=" * 15) print("Taken arguments:", *args, kwargs) result = func(*args, **kwargs) print("=" * 15) return result return wrapper @indicate def avg_two(a, b): """Calculate the average of two numbers""" return round((a + b) / 2, 1) @indicate def avg_three(a, b, c): """Calculate the average of three numbers""" return round((a + b + c) / 3, 1) @indicate def avg_many_kwargs(**kwargs): """Calculate the average of multiple numbers in a dictionary""" keys = 0 total = 0 for value in kwargs.values(): keys += 1 total += value return round(total / keys, 1) print("Returned:", avg_two(14, 21), "\n") print("Returned:", avg_three(225, 12, 11), "\n") print("Returned:", avg_many_kwargs(first=51, second=11, third=47, fourth=93))
Merci pour vos commentaires !