Maison  >  Article  >  développement back-end  >  Est-il approprié de combiner plusieurs décorateurs à l’aide de Python ?

Est-il approprié de combiner plusieurs décorateurs à l’aide de Python ?

伊谢尔伦
伊谢尔伦original
2017-06-28 13:24:382017parcourir

Cet article présente principalement les astuces pour fusionner plusieurs décorateurs en Python Cet article utilise la méthode de réécriture et d'appel de la fonction pour fusionner plusieurs décorateurs en une seule ligne et une seule fonction. En appelant, les amis qui en ont besoin peuvent se référer au programme

django. Vous devez écrire beaucoup d'API, et chaque fonction nécessite plusieurs décorateurs, tels que

@csrf_exempt  
@require_POST  
def  foo(request):  
    pass
<.>Dans ce cas, plusieurs méthodes doivent écrire deux décorateurs, ou plus. Existe-t-il un moyen de combiner plusieurs décorateurs en une seule ligne ?

Le processus d'exécution de la fonction ci-dessus doit être

Le code est le suivant :

csrf_exempt(require_POST(foo))
est modifié en

def compose(*funs):  
    def deco(f):  
        for fun in reversed(funs):  
            f = fun(f)  
        
return f  
return deco
La fonction est réécrit comme

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn