Maison > développement back-end > Tutoriel Python > Comprendre les décorateurs Python : un guide du débutant avec des exemples

Comprendre les décorateurs Python : un guide du débutant avec des exemples

Barbara Streisand
Libérer: 2025-01-27 16:12:11
original
770 Les gens l'ont consulté

Understanding Python Decorators: A Beginner’s Guide with Examples

Python Decorative: Guide débutant et exemple

Python Decorator est un outil puissant et universel pour modifier la fonction ou le comportement de la méthode. Ils vous permettent d'ajouter des fonctions au code existant sans modifier la structure du code. Cet article analysera le dispositif décoratif et fournira des exemples simples pour vous aider à les comprendre et à les utiliser efficacement.

Qu'est-ce que le décorateur?

Le décorateur de Python est essentiellement une fonction qui reçoit une autre fonction en tant que paramètre et étend ou modifie son comportement. La décoration est généralement utilisée pour ajouter la journalisation, le contrôle d'accès, la mémoire ou la vérification aux fonctions ou méthodes existantes.

La décoration de Python utilise

la grammaire est appliquée à la définition de la fonction.

@decorator_name

La structure du décorateur

Une fonction de décorateur de base a la structure suivante:

Application Decorative
<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>
Copier après la connexion
Vous pouvez utiliser grammaire ou méthode manuelle pour appliquer la décoration à la fonction:

@decorator_name Exemple 1: DÉCOLES DE BASE

<code class="language-python">@decorator_function
def some_function():
    print("这是原始函数。")

# 等同于:
# some_function = decorator_function(some_function)</code>
Copier après la connexion
Créons un appareil décoratif simple qui imprime un message avant et après l'exécution de la fonction.

Sortie:

<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>
Copier après la connexion

Exemple 2: Décorer avec paramètres

Vous pouvez créer un décorateur qui accepte les paramètres, la méthode consiste à l'emballer dans une autre fonction.
<code>函数调用之前。
Hello, World!
函数调用之后。</code>
Copier après la connexion

Sortie:

<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>
Copier après la connexion

l'application réelle du dispositif décoratif Les décoles sont largement utilisées dans les scénarios réels. Voici quelques exemples pratiques simplifiés:

<code>Hello, Alice!
Hello, Alice!
Hello, Alice!</code>
Copier après la connexion
1. Enregistrer le fonctionnement de l'utilisateur

Vous pouvez utiliser le décoratif pour enregistrer l'heure du fonctionnement de l'utilisateur.

Sortie:

2. Suivi du temps d'exécution
<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>
Copier après la connexion

Le temps nécessaire pour suivre l'exécution de la tâche est très utile pour la surveillance des performances.

<code>操作:正在执行 upload_file。
正在上传 report.pdf...</code>
Copier après la connexion
Sortie:

3. Ajouter des salutations utilisateur

<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>
Copier après la connexion
Le décoratif peut être personnalisé en ajoutant des éléments dynamiques.

Sortie:

<code>下载完成。
download_file 执行耗时 5.00 秒。</code>
Copier après la connexion

points clés

Le décorateur est un moyen puissant de modifier la fonction ou le comportement de la méthode.

Ils peuvent simplifier les tâches répétitives, telles que les enregistrements du journal, le calendrier ou la personnalisation.
<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>
Copier après la connexion

L'utilisation de la grammaire peut facilement les appliquer. La décoration peut accepter les paramètres et imbriquées pour améliorer la flexibilité.

<code>您好,欢迎!
用户资料:Alice</code>
Copier après la connexion

En maîtrisant le décorateur, vous maîtriserez un précieux outil pour écrire un code Python simple et efficace. Commencez à essayer les exemples pour connaître ce concept!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal