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
def decorator_function(original_function): def wrapper_function(*args, **kwargs): # 在原始函数执行之前的代码 result = original_function(*args, **kwargs) # 在原始函数执行之后的代码 return result return wrapper_function
@decorator_name
Exemple 1: DÉCOLES DE BASE
@decorator_function def some_function(): print("这是原始函数。") # 等同于: # some_function = decorator_function(some_function)
def simple_decorator(func): def wrapper(): print("函数调用之前。") func() print("函数调用之后。") return wrapper @simple_decorator def say_hello(): print("Hello, World!") say_hello()
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>
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")
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
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")
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>
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)
<出> 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.
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")
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!