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?
La décoration de Python utilise
la grammaire est appliquée à la définition de la fonction.
@decorator_name
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>
@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>
<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>
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>
<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>
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>
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>
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>
<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>
Sortie:
<code>下载完成。 download_file 执行耗时 5.00 秒。</code>
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>
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>
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!