Heim >Backend-Entwicklung >Python-Tutorial >Python Decorators verstehen: Ein Anfängerführer mit Beispielen

Python Decorators verstehen: Ein Anfängerführer mit Beispielen

Barbara Streisand
Barbara StreisandOriginal
2025-01-27 16:12:11762Durchsuche

Understanding Python Decorators: A Beginner’s Guide with Examples

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.


Was ist ein Dekorateur?

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.


Struktur des Dekorateurs

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>

Dekorator auftragen

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>

Beispiel 1: Basic Decorator

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>

Beispiel 2: Decorator mit Parametern

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>

Praktische Anwendung von Dekorateuren

Dekorateure werden häufig in praktischen Szenarien eingesetzt. Hier einige vereinfachte Praxisbeispiele:

1. Benutzervorgänge aufzeichnen

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>

2. Ausführungszeit verfolgen

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>

3. Benutzerbegrüßung hinzufügen

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>

Wichtige Punkte

  • Dekoratoren sind eine leistungsstarke Möglichkeit, das Verhalten einer Funktion oder Methode zu ändern.
  • Sie vereinfachen sich wiederholende Aufgaben wie Protokollierung, Zeitplanung oder Personalisierung.
  • Sie können einfach mithilfe der @decorator-Syntax angewendet werden.
  • Dekoratoren können Parameter akzeptieren und verschachtelt werden, um die Flexibilität zu erhöhen.

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!

Stellungnahme:
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