Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Décorateurs avec Paramètres | 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
Décorateurs avec Paramètres

Les décorateurs avec paramètres en Python sont une fonctionnalité avancée qui vous permet de passer des arguments supplémentaires à vos décorateurs, augmentant ainsi leur flexibilité. Voici un exemple pratique pour illustrer ce concept :

Structure de base d'un décorateur

Tout d'abord, commençons par une structure de décorateur de base :

123456789101112
def simple_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @simple_decorator def say_hello(): print("Hello!") say_hello()
copy

Dans cet exemple, simple_decorator est un décorateur régulier qui modifie le comportement de la fonction say_hello.

Décorateur avec Paramètres

Maintenant, créons un décorateur qui accepte des paramètres :

12345678910111213
def decorator_with_args(arg1, arg2): def decorator(func): def wrapper(*args, **kwargs): print(f"Decorator args: {arg1}, {arg2}") return func(*args, **kwargs) return wrapper return decorator @decorator_with_args("hello", 42) def print_numbers(a, b): print(a + b) print_numbers(10, 5)
copy

Dans cet exemple, decorator_with_args est une fabrique de décorateurs qui accepte des paramètres (arg1, arg2) et retourne le décorateur réel (decorator). La fonction wrapper est celle qui modifie le comportement de la fonction décorée (print_numbers).

Explication

  • decorator_with_args est appelé avec ses arguments ("hello", 42);
  • Il retourne la fonction decorator;
  • decorator prend une fonction print_numbers et retourne la fonction wrapper;
  • wrapper a accès à la fois aux arguments de decorator_with_args et aux arguments de print_numbers.

Cette structure permet une plus grande flexibilité et réutilisabilité des décorateurs, car vous pouvez passer des arguments personnalisés pour modifier leur comportement.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

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