Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Enchaînement et empilement de décorateurs | Maîtriser les itérateurs et les décorateurs Python
Concepts de Programmation Fonctionnelle en Python

bookEnchaînement et empilement de décorateurs

Glissez pour afficher le menu

Lors de l'utilisation des décorateurs en Python, il est souvent nécessaire d'appliquer plusieurs décorateurs à une même fonction. Cela s'appelle empiler ou enchaîner des décorateurs. Pour empiler des décorateurs, il suffit de placer plusieurs lignes de décorateur, l'une après l'autre, directement au-dessus de la définition de la fonction. L'ordre dans lequel les décorateurs sont empilés est important, car il influence la manière dont la fonction est enveloppée et la façon dont chaque décorateur interagit avec les autres. Le décorateur le plus proche de la fonction est appliqué en premier, et chaque décorateur suivant enveloppe le résultat du précédent. Ainsi, le décorateur situé en haut de la pile constitue l'enveloppe la plus externe, tandis que celui le plus proche de la fonction est l'enveloppe la plus interne.

L'exemple ci-dessous définit deux décorateurs, decorator_one et decorator_two, empilés au-dessus d'une fonction appelée greet. L'ordre d'empilement détermine la manière dont les décorateurs sont appliqués.

123456789101112131415161718192021222324252627
# Prints messages before and after the function call def decorator_one(func): def wrapper(*args, **kwargs): print("Decorator One: Before") result = func(*args, **kwargs) print("Decorator One: After") return result return wrapper # Also prints messages before and after the function call def decorator_two(func): def wrapper(*args, **kwargs): print("Decorator Two: Before") result = func(*args, **kwargs) print("Decorator Two: After") return result return wrapper # Stacking decorators # decorator_two is applied first (innermost), # then decorator_one wraps the result (outermost) @decorator_one @decorator_two def greet(name): print(f"Hello, {name}!") greet("Alice")
copy
Note
Remarque

Remarquez que decorator_two est appliqué d'abord à greet, puis decorator_one enveloppe le résultat. Cela signifie que le décorateur le plus proche de la fonction est le plus interne, et celui du dessus est le plus externe. L'ordre d'empilement est important, car il influence le comportement de votre fonction décorée.

question mark

Dans quel ordre les décorateurs empilés sont-ils appliqués en Python ?

Sélectionnez toutes les réponses correctes

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 5

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 4. Chapitre 5
some-alt