ich Python neu bin und sah den folgenden Code in einem Beispiel@ -Zeichen in Python Methodenaufruf
import functools
...
..
def wrapper(func):
@functools.wraps(func)
....
Was hier bedeutet das @ -Zeichen?
ich Python neu bin und sah den folgenden Code in einem Beispiel@ -Zeichen in Python Methodenaufruf
import functools
...
..
def wrapper(func):
@functools.wraps(func)
....
Was hier bedeutet das @ -Zeichen?
Das ist die Syntax für Python decorators --Funktionen oder Methoden, die ein Objekt, sagen eine Funktion, Methode oder Klasse, und etwas ausführen können, wenn das Objekt aufgerufen wird oder wenn es ein Ergebnis zurückgibt.
Sie verlassen einen wichtigen Teil aus dem Beispiel. Ein ähnliches kann man in den official functools.wrap
doc, und sieht aus wie zu finden:
from functools import wraps
def my_decorator(f):
@wraps(f)
def wrapper(*args, **kwds):
print('Calling decorated function')
return f(*args, **kwds)
return wrapper
In diesem Beispiel sind die Namen sind ein wenig in Bezug auf Ihrem gemischt. In diesem ist @wraps(f)
schmücken die Funktion wrapper
(die, die direkt danach kommt).
Es gibt eine Menge Quellen darüber, was Python Dekoratoren sind. Here ist einer von ihnen.
Ich habe übersehen, dass der Dekorateur die Wrapper-Funktion dekoriert. Ich habe ein paar Beispiele codiert und jetzt ist es klar. Vielen Dank! – user1318842
@ user1318842: Gern geschehen! Ich erwarte, dass du diese Antwort bald akzeptierst (http://meta.stackexchange.com/a/5235/177799). –