pense-bête de bruno sanchiz

Accueil > Programmation > python > décorateur décorator

décorateur décorator

Publié le 25 novembre 2022, dernière mise-à-jour le 26 août 2023, 6 visites, 23644 visites totales.

Un décorateur agit sur la sortie d’une fonction , sans la remplacer directement.
Quand la fonction est appelée, c’est le décorateur qui est appelé.

Par exemple avec une fonction

def decorateur(f):
    def g(a,b):
        print( "le résultat est {}".format(f(a,b)))
    return g

@decorateur
def ajoute(a,b):
    return a+b
@decorateur
def mult(a,b):
    return a*b

ajoute(5,3) affichera le résultat est 8
au lieu de retourner 8
mult(2,4) affichera le résultat est 8
Attention : le simple fait d’utiliser la fonction provoque l’affichage :
c=ajoute(5,6) affiche le résultat est 11


succession de décorateurs :

def decorateur2(f):
    def h(a,b):
        print( "Dans l'ensemble des réels, {}".format(f(a,b)))
    return h

def decorateur(f):
    def g(a,b):
        return  "le résultat est {}".format(f(a,b))
    return g

@decorateur2
@decorateur
def div(a,b):
    return a/b

div (5,4)

Dans l’ensemble des réels, le résultat est 1.25


On peut généraliser le décorateur :

def decorateur(f):
	def g(*args,**kargs):
		print( "le résultat est {}".format(f(*args,**kargs)))
	return g

decorateur debug :
def decorateur_debug(f) :
def g(*args,**kargs) :
if debug==True :
print(f.__name__+" :"+f.__doc__)
return f(*args,**kargs)
return g


https://zestedesavoir.com/tutoriels/954/notions-de-python-avancees/2-functions/3-decorators/#fn-approximation_decorateur

[bruno sanchiz]