Contenu du cours
Techniques Python Intermédiaires
Techniques Python Intermédiaires
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 :
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()
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 :
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)
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 fonctionprint_numbers
et retourne la fonctionwrapper
;wrapper
a accès à la fois aux arguments dedecorator_with_args
et aux arguments deprint_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.
Merci pour vos commentaires !