Catégorie dans Décorateurs

Décorateurs Python

Les décorateurs en Python sont des fonctions qui permettent de modifier le comportement d’autres fonctions. Ils sont très utiles pour ajouter des fonctionnalités supplémentaires à une fonction sans avoir à la modifier directement.

Voici un exemple de décorateur qui ajoute un comportement de journalisation à une fonction :

 

def logger(func):
    def wrapper(*args, **kwargs):
        print(f"Appel de la fonction {func.__name__} avec les arguments {args} et {kwargs}")
        result = func(*args, **kwargs)
        print(f"Le résultat de la fonction est {result}")
        return result
    return wrapper

@logger
def add(x, y):
    return x + y

add(5, 6)

Le décorateur

logger

prend une fonction en entrée et renvoie une nouvelle fonction qui ajoute le comportement de journalisation. Lorsque vous appelez la fonction

add

, elle appelle la fonction

wrapper

qui effectue la journalisation et appelle la fonction originale

add

.

Le décorateur est défini en utilisant le symbole

@

suivi du nom de la fonction décoratrice, comme ceci :

 

@logger
def add(x, y):
    return x + y

Cette syntaxe est équivalente à ceci :

 

def add(x, y):
    return x + y
add = logger(add)

Les décorateurs sont une fonctionnalité puissante de Python qui vous permet de facilement ajouter de nouvelles fonctionnalités à vos fonctions existantes sans avoir à les modifier directement. Ils sont souvent utilisés pour ajouter de la journalisation, du contrôle d’accès ou d’autres fonctionnalités de gestion de données à des fonctions existantes.

Les Décorateurs

En Python, un décorateur est un patron de conception qui vous permet d’étendre la fonctionnalité d’une fonction sans modifier son code. Cela est réalisé en enveloppant la fonction dans une autre fonction, qui prend la fonction originale en argument et retourne une version modifiée de celle-ci.

Dans cet exemple, le décorateur

greet

est défini comme une fonction qui prend une fonction en argument (

func

) et retourne une fonction wrapper. La fonction wrapper est définie à l’intérieur de la fonction

greet

et retourne une version modifiée de la fonction originale en ajoutant une salutation à son résultat.

La syntaxe

@greet

au-dessus de la fonction

message

est un raccourci pour dire

message = greet(message)

. Cela s’appelle “décorer” la fonction

message

avec le décorateur

greet

. Lorsque vous appelez

message()

, cela appelle la fonction wrapper, qui à son tour appelle la fonction originale

message

et retourne le résultat modifié.

Voici un exemple de décorateur simple qui ajoute une salutation à une fonction qui retourne un message :

 

 

def greet(func):
def wrapper():
return "Hello, " + func()
return wrapper

@greet
def message():
return "world"

print(message()) # Output: "Hello, world"