Heim > Backend-Entwicklung > Python-Tutorial > Ist es geeignet, mehrere Dekoratoren mit Python zu kombinieren?

Ist es geeignet, mehrere Dekoratoren mit Python zu kombinieren?

伊谢尔伦
Freigeben: 2017-06-28 13:24:38
Original
2102 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich Python-Tipps zum Zusammenführen mehrerer Dekoratoren vorgestellt. Dieser Artikel verwendet eine neu geschriebene Methode zum Aufrufen der -Funktion , um mehrere Dekoratoren in einer Zeile und einer Funktion zusammenzuführen Wer es braucht, kann auf das Programm

django zurückgreifen. Für jede Funktion sind mehrere Dekoratoren erforderlich, z. B.

@csrf_exempt  
@require_POST  
def  foo(request):  
    pass
Nach dem Login kopieren

Darin Bei mehreren Methoden müssen zwei oder mehr Dekoratoren geschrieben werden. Gibt es eine Möglichkeit, mehrere Dekoratoren in einer Zeile zu kombinieren?
Der Ausführungsprozess der obigen Funktion sollte

sein. Der Code lautet wie folgt:

csrf_exempt(require_POST(foo))
Nach dem Login kopieren

wird geändert in

def compose(*funs):  
    def deco(f):  
        for fun in reversed(funs):  
            f = fun(f)  
        
return f  
return deco
Nach dem Login kopieren

Die Funktion wird umgeschrieben als

@compose(csrf_exempt, require_POST)  
def foo(request):  
    pass
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonIst es geeignet, mehrere Dekoratoren mit Python zu kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage