Heim >Backend-Entwicklung >Python-Tutorial >Python Decorators verstehen: Ein Anfängerführer mit Beispielen
Python Decorators: Leitfaden für Anfänger und Beispiele
Python-Dekoratoren sind leistungsstarke und vielseitige Werkzeuge zum Ändern des Verhaltens von Funktionen oder Methoden. Sie ermöglichen es Ihnen, vorhandenen Code um Funktionalität zu erweitern, ohne seine Struktur zu ändern. Dieser Artikel befasst sich ausführlich mit Dekorateuren und bietet einfache Beispiele, die Ihnen helfen, sie zu verstehen und effektiv zu nutzen.
Ein Dekorator in Python ist im Wesentlichen eine Funktion, die eine andere Funktion als Argument empfängt und deren Verhalten erweitert oder ändert. Dekoratoren werden normalerweise verwendet, um Funktionen wie Protokollierung, Zugriffskontrolle, Memoisierung oder Validierung zu einer vorhandenen Funktion oder Methode hinzuzufügen.
Dekoratoren in Python werden mithilfe der @decorator_name
-Syntax auf Funktionsdefinitionen angewendet.
Eine grundlegende Dekoratorfunktion hat die folgende Struktur:
<code class="language-python">def decorator_function(original_function): def wrapper_function(*args, **kwargs): # 在原始函数执行之前的代码 result = original_function(*args, **kwargs) # 在原始函数执行之后的代码 return result return wrapper_function</code>
Sie können Dekoratoren mithilfe der @decorator_name
-Syntax oder manuell auf Funktionen anwenden:
<code class="language-python">@decorator_function def some_function(): print("这是原始函数。") # 等同于: # some_function = decorator_function(some_function)</code>
Lassen Sie uns einen einfachen Dekorator erstellen, der vor und nach der Ausführung der Funktion eine Nachricht druckt.
<code class="language-python">def simple_decorator(func): def wrapper(): print("函数调用之前。") func() print("函数调用之后。") return wrapper @simple_decorator def say_hello(): print("Hello, World!") say_hello()</code>
Ausgabe:
<code>函数调用之前。 Hello, World! 函数调用之后。</code>
Sie können einen Dekorator erstellen, der einen Parameter akzeptiert, indem Sie ihn in eine andere Funktion einbinden.
<code class="language-python">def repeat_decorator(times): def decorator(func): def wrapper(*args, **kwargs): for _ in range(times): func(*args, **kwargs) return wrapper return decorator @repeat_decorator(3) def greet(name): print(f"Hello, {name}!") greet("Alice")</code>
Ausgabe:
<code>Hello, Alice! Hello, Alice! Hello, Alice!</code>
Dekorateure werden häufig in praktischen Szenarien eingesetzt. Hier einige vereinfachte Praxisbeispiele:
Sie können Dekoratoren verwenden, um jedes Mal aufzuzeichnen, wenn der Benutzer eine Aktion ausführt.
<code class="language-python">def log_action(func): def wrapper(*args, **kwargs): print(f"操作:正在执行 {func.__name__}。") return func(*args, **kwargs) return wrapper @log_action def upload_file(filename): print(f"正在上传 {filename}...") upload_file("report.pdf")</code>
Ausgabe:
<code>操作:正在执行 upload_file。 正在上传 report.pdf...</code>
Verfolgen Sie die Zeit, die für die Ausführung einer Aufgabe benötigt wird, was für die Leistungsüberwachung nützlich ist.
<code class="language-python">import time def track_time(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f"{func.__name__} 执行耗时 {end - start:.2f} 秒。") return result return wrapper @track_time def download_file(file_size): time.sleep(file_size / 10) # 模拟下载时间 print("下载完成。") download_file(50)</code>
Ausgabe:
<code>下载完成。 download_file 执行耗时 5.00 秒。</code>
Dekorateure können Begrüßungen durch das Hinzufügen dynamischer Elemente personalisieren.
<code class="language-python">def add_greeting(func): def wrapper(name): print("您好,欢迎!") func(name) return wrapper @add_greeting def show_user_profile(name): print(f"用户资料:{name}") show_user_profile("Alice")</code>
Ausgabe:
<code>您好,欢迎! 用户资料:Alice</code>
@decorator
-Syntax angewendet werden. Durch die Beherrschung von Dekoratoren erwerben Sie ein wertvolles Werkzeug zum Schreiben von prägnantem und effizientem Python-Code. Probieren Sie die bereitgestellten Beispiele aus, um sich mit dem Konzept vertraut zu machen!
Das obige ist der detaillierte Inhalt vonPython Decorators verstehen: Ein Anfängerführer mit Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!