Une fonction qui prend une fonction comme entrée et en renvoie une autre. À utiliser lorsque vous souhaitez faire quelque chose avant ou après une fonction.
Exemple
#Décorateur
def test(func):
def new_func(*args, **kwargs):
print("start")
result = func(*args, **kwargs)
print("end")
return result
return new_func
#Cible décorateur
#Décoré en annotant
@test
def greeting():
print("Hello")
greeting()
résultat
start
Hello
end
Exemple
#À propos des décorateurs
#dump est appelé et func=Courir en double
def dump(func):
"Afficher les arguments d'entrée et les valeurs de sortie"
def wrapped(*args, **kwards):
print("Fuction name: %s" % func.__name__)
print("Input arguments: %s " % ' '.join(map(str, args)))
print("Input keyaeorods: %s " % kwards.items())
output = func(*args, **kwards)
print("Output:", output)
return wrapped
@dump
def double(*args, **kwards):
"Double every arguments"
output_list = [2 * args for arg in args]
output_dict = {k: 2 * v for k, v in kwards.items()}
return output_list, output_dict
résultat
Fuction name: double
Input arguments: 3 5
Input keyaeorods: dict_items([('first', 100), ('next', 98.6), ('last', 40)])
Output: ([(3, 5, 3, 5), (3, 5, 3, 5)], {'first': 200, 'next': 197.2, 'last': 80})
"Introduction à Python 3" (Auteur: Bill Lubanovic)
Recommended Posts