Python Decorator adalah alat yang kuat dan sejagat untuk mengubahsuai fungsi atau tingkah laku kaedah. Mereka membolehkan anda menambah fungsi ke kod sedia ada tanpa mengubah struktur kod. Artikel ini akan menganalisis peranti hiasan dan memberikan contoh mudah untuk membantu anda memahami dan menggunakannya dengan berkesan.
Apa itu penghias?
Hiasan dalam Python menggunakan
tatabahasa digunakan untuk definisi fungsi.
@decorator_name
hiasan aplikasi
<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
Contoh 1: Penyusutan Asas
<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>
Contoh 2: Decoler dengan parameter
Anda boleh membuat penghias yang menerima parameter, kaedahnya adalah untuk membungkusnya dalam fungsi lain.<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>
aplikasi sebenar peranti hiasan Penyusutan digunakan secara meluas dalam senario sebenar. Berikut adalah beberapa contoh praktikal yang dipermudahkan:
<code>Hello, Alice! Hello, Alice! Hello, Alice!</code>
2. Mengesan masa pelaksanaan
<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>
Masa yang diperlukan untuk menjejaki pelaksanaan tugas sangat berguna untuk pemantauan prestasi.
<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>
output:
<code>下载完成。 download_file 执行耗时 5.00 秒。</code>
Mereka dapat memudahkan tugas berulang, seperti rekod log, masa atau pemperibadian.
<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>
menggunakan tatabahasa dengan mudah boleh menggunakannya. Hiasan boleh menerima parameter dan bersarang untuk meningkatkan fleksibiliti.
<code>您好,欢迎! 用户资料:Alice</code>
Atas ialah kandungan terperinci Memahami Python Hecorators: Panduan Pemula dengan Contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!