Heim >Backend-Entwicklung >Python-Tutorial >Wie behält man Funktionssignaturen mit Python-Dekoratoren bei?
Funktionssignaturen mit Dekoratoren beibehalten
Dekoratoren sind ein leistungsstarkes Werkzeug in Python, können aber auch Probleme mit dekorierten Funktionssignaturen verursachen. Um die Signatur der ursprünglichen Funktion beizubehalten, ziehen Sie die folgenden Ansätze in Betracht:
Ansatz 1: Decorator-Modul
Installieren Sie das Decorator-Modul (pip install decorator) und passen Sie Ihren Decorator an die Verwendung an seine @decorator.decorator-Syntax:
<code class="python">import decorator @decorator.decorator def args_as_ints(f, *args, **kwargs): args = [int(x) for x in args] kwargs = dict((k, int(v)) for k, v in kwargs.items()) return f(*args, **kwargs)</code>
Ansatz 2: functools.wraps() (Python 3.4)
Python 3.4 führte functools.wraps() ein, das bewahrt Funktionssignaturen:
<code class="python">import functools def args_as_ints(func): @functools.wraps(func) def wrapper(*args, **kwargs): args = [int(x) for x in args] kwargs = dict((k, int(v)) for k, v in kwargs.items()) return func(*args, **kwargs) return wrapper</code>
Beide Ansätze bewahren effektiv die Funktionssignatur nach der Dekoration. Darüber hinaus kann functools.wraps() für die Kompatibilität mit älteren Python-Versionen verwendet werden.
Das obige ist der detaillierte Inhalt vonWie behält man Funktionssignaturen mit Python-Dekoratoren bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!