J'ai essayé d'utiliser des décorateurs de fonction, mais dans cet exemple, cela ne fonctionne pas pour moi, pouvez-vous me donner la solution?Python erreur de décorateur de fonction
def multiply_by_three(f):
def decorator():
return f() * 3
return decorator
@multiply_by_three
def add(a, b):
return a + b
print(add(1,2)) # returns (1 + 2) * 3 = 9
interprète erreur imprime: « TypeError: décorateur() prend 0 arguments de position, mais 2 ont reçu »
Il dit la vérité. Votre fonction 'decorator' ne prend aucun argument, byt quand vous appelez' add (1,2) ', vous finissez par appeler' decorator (1,2) ', car c'est ce que vous renvoyez de votre méthode' multiply_by_three' . En outre, ne pas l'appeler "décorateur" parce que cela rendra très confus de discuter (puisque 'multiply_by_three' est le décorateur actuel). – larsks