Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Syntaxe | Décorateurs
Techniques Python Intermédiaires
course content

Contenu du cours

Techniques Python Intermédiaires

Techniques Python Intermédiaires

1. Emballage et Déballage
2. Arguments dans les Fonctions
3. Fonction Comme Argument
4. Portée des Variables
5. Décorateurs

book
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().

1234567891011121314151617181920212223242526272829303132333435
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))
copy

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 2
We're sorry to hear that something went wrong. What happened?
some-alt