[Python] Was ist @? (Über Dekorateure)

Ich arbeite an einem Pyramiden-Tutorial, aber es gibt viele Dinge, die ich nicht weiß.

Vorerst ist eine Quelle mit einem @ herausgekommen. Wenn ich Java verwende, denke ich, dass es eine Anmerkung ist. Das ist nicht der Fall, und als ich es nachgeschlagen habe, war es ein Dekorateur.

Dekorateure werden zum Umwickeln von Objekten verwendet. [Entwurfsmuster](http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3% 82% BF% E3% 83% BC% E3% 83% B3_% 28% E3% 82% BD% E3% 83% 95% E3% 83% 88% E3% 82% A6% E3% 82% A7% E3% 82% A2% 29) Richtig.

Es scheint also, dass der Dekorator in Python als Funktion bereitgestellt wird. Ich habe eine einfache Quelle mit einem Dekorateur geschrieben.


#Dekorateur (vor der Funktion zu dekorieren"before",hinter"after"Zur Ausgabe)
def deco_test(func):
    def wrapper(arg):
        print("before")
        func(arg)
        print("after")
    return wrapper


#Funktioniert mit Dekorateuren@Rufen Sie den Dekorateur mit.
@deco_test
def hello(arg):
    print("Hello, " + arg)

hello("world!")

Das Ausführungsergebnis ist wie folgt. before Hello, world! after

Übrigens kann die Hallo-Funktion mit dem Dekorator durch die folgende Funktion ersetzt werden.

def hello(arg):
    print("Hello, " + arg)
hello = deco_test(hello)

Anfangs war ich mir nicht sicher, aber nachdem ich verschiedene Dinge ausprobiert hatte, Python hat stark gelernt, dass Funktionen auch Objekte sind. Die Funktion ist ein Argument. Wenn Sie also () zu der Variablen hinzufügen, in der die Funktion gespeichert ist, und sie ausführen.

Es scheint, dass Sie Programme sehr flexibel schreiben können, Es wird dynamisch eingegeben, und wenn Sie es nicht richtig benennen, Es scheint, dass ein Code, der sehr schwer zu verstehen ist, vervollständigt wird.

Der Code, der im Pyramiden-Tutorial veröffentlicht wurde, lautet übrigens wie folgt

@view_config(route_name='home', renderer='templates/mytemplate.pt')
def my_view(request):
    try:
        one = DBSession.query(MyModel).filter(MyModel.name == 'one').first()
    except DBAPIError:
        return Response(conn_err_msg, content_type='text/plain', status_int=500)
    return {'one': one, 'project': 'tutorial'}

Ich war ein wenig besorgt, weil diese view_config der Klassenname war, Der @ -Teil ist eine Instanzerstellung und ein Argument wird an init übergeben. Die Dekorationsfunktion my_view ist in den Instanzaufruf call eingeschlossen.

Ich denke, das bedeutet es, aber die Überprüfung kommt wieder.

Recommended Posts

[Python] Was ist @? (Über Dekorateure)
[Python] Was ist der sortierte Schlüssel?
Was ist Python?
Wofür ist der Python-Unterstrich (_)?
Was ist Python?
Was ist "Mahjong" in der Python-Bibliothek? ??
[Python] Was ist Pipeline ...
[Python] Was ist virtualenv?
Ein Java-Programmierer studierte Python. (Über Dekorateure)
Was ist im Docker Python-Image pfeifend?
Über den Unterschied zwischen "==" und "is" in Python
Was ist die Aktivierungsfunktion?
Über das Python-Modul venv
Über die Aufzählungsfunktion (Python)
[Python] Python und Sicherheit - is Was ist Python?
[Python] * args ** Was ist kwrgs?
Was ist die Schnittstelle für ...
Über die Funktionen von Python
Was ist die Rückruffunktion?
Python-Grundkurs (1 Was ist Python?)
[Python] Was ist eine Zip-Funktion?
[Python] Was ist eine with-Anweisung?
Python Hinweis: Über den Vergleich mit is
Was war überraschend an Python-Klassen?
Python für Anweisung ~ Was ist iterierbar ~
Was ist das X Window System?
Was ist die Standard-TLS-Version des Python-Anforderungsmoduls?
Python> Was ist ein erweitertes Slice?
Informationen zur Grundlagenliste der Python-Grundlagen
[Einführung in Python] Was ist Python, die derzeit leistungsstärkste Programmiersprache?
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
[Python] Was ist Pandas Series und DataFrame?
Was ist NaN? NaN Zoya (Python) (394 Tage zu spät)
[Python Kivy] Über das Ändern des Designthemas
Was für eine Programmiersprache ist Python?
Was ist Clivoa, ein Framework für die ETL-Verarbeitung?
[Unix] Was ist der Zombie-Prozess / Orphan-Prozess?
Was ist die Ursache für den folgenden Fehler?
Wo ist der Python-Instanziierungsprozess geschrieben?
Lernen Sie das Designmuster "Decorator" mit Python
[Python] Fassen Sie die rudimentären Dinge über Multithreading zusammen
Was ist ein Hund? Python-Installationsvolumen
[Python] [Meta] Ist der Python-Typ ein Typ?
Was ist mit 2017 rund um die Crystal-Sprache? (Täuschung)
[Maschinelles Lernen] Was ist LP-Norm?
Über den 02. Februar 2020 * Dies ist ein Python-Artikel.
Was ist ein Namespace?
Über Python-Slices
Über die Einschlussnotation von Python
Hinweis: Python-Dekorator
Was ist copy.copy ()
[Python] Was ist ein formales Argument? So stellen Sie den Anfangswert ein
Was ist die XX-Datei im Stammverzeichnis eines beliebten Python-Projekts?
Über den Test
[Einführung in Python] Was ist der Unterschied zwischen einer Liste und einem Taple?
Was ist dotenv?
Über Python tqdm.