Cara menggunakan fungsi penghias dalam Python
Dalam pengaturcaraan Python, penghias ialah alat yang sangat berguna. Ia membolehkan kami memanjangkan fungsi dengan fungsi tambahan tanpa mengubah suai kod fungsi asal. Fungsi penghias secara automatik boleh melakukan beberapa operasi sebelum dan selepas pelaksanaan fungsi, seperti pengelogan, pemasaan, pengesahan kebenaran, dsb. Artikel ini akan memperkenalkan konsep asas fungsi penghias dan menyediakan beberapa contoh kod konkrit.
1. Definisi fungsi penghias
Fungsi penghias ialah fungsi yang menerima fungsi sebagai parameter dan mengembalikan fungsi baharu. Ia boleh digunakan pada fungsi menggunakan sintaks @. Berikut ialah contoh definisi fungsi penghias mudah:
def decorator_function(original_function): def wrapper_function(*args, **kwargs): # 在函数执行前的操作 print("Before executing the function") # 执行原始函数 result = original_function(*args, **kwargs) # 在函数执行后的操作 print("After executing the function") return result return wrapper_function
2. Aplikasi fungsi penghias
Fungsi penghias boleh melakukan beberapa operasi tambahan sebelum dan selepas pelaksanaan fungsi. Berikut ialah contoh menggunakan fungsi penghias untuk melaksanakan fungsi pemasaan:
import time def timer_decorator(original_function): def wrapper_function(*args, **kwargs): start_time = time.time() result = original_function(*args, **kwargs) end_time = time.time() execution_time = end_time - start_time print(f"Execution time: {execution_time} seconds") return result return wrapper_function @timer_decorator def my_function(): time.sleep(1) print("Function executed") my_function()
Dalam contoh di atas, fungsi penghias pemasa_penghias digunakan pada fungsi my_function. Apabila my_function dipanggil, penghias merekodkan masa mula sebelum fungsi dilaksanakan, mengira masa tamat selepas fungsi dilaksanakan dan mengira masa pelaksanaan fungsi.
3. Parameter fungsi penghias
Fungsi penghias boleh menerima parameter untuk menggunakan penghias yang berbeza untuk fungsi yang berbeza. Berikut ialah contoh fungsi penghias dengan parameter:
def prefix_decorator(prefix): def decorator_function(original_function): def wrapper_function(*args, **kwargs): print(f"{prefix}: Before executing the function") result = original_function(*args, **kwargs) print(f"{prefix}: After executing the function") return result return wrapper_function return decorator_function @prefix_decorator("LOG") def my_function(): print("Function executed") my_function()
Dalam contoh di atas, fungsi prefix_decorator mengembalikan fungsi penghias yang mencetak maklumat log dengan awalan sebelum dan selepas fungsi itu dilaksanakan.
4. Aplikasi berbilang penghias
Pelbagai fungsi penghias boleh digunakan pada fungsi yang sama untuk membentuk kesan susunan penghias. Berikut ialah contoh penggunaan berbilang penghias:
def decorator1(original_function): def wrapper_function(*args, **kwargs): print("Decorator 1: Before executing the function") result = original_function(*args, **kwargs) print("Decorator 1: After executing the function") return result return wrapper_function def decorator2(original_function): def wrapper_function(*args, **kwargs): print("Decorator 2: Before executing the function") result = original_function(*args, **kwargs) print("Decorator 2: After executing the function") return result return wrapper_function @decorator1 @decorator2 def my_function(): print("Function executed") my_function()
Dalam contoh di atas, fungsi penghias1 dan penghias2 digunakan pada fungsi my_function dalam urutan. Apabila my_function dipanggil, penghias 2 akan dilaksanakan selepas penghias 1.
Ringkasan:
Fungsi penghias ialah alat yang sangat berguna dalam Python, yang boleh memanjangkan fungsi dengan fungsi tambahan tanpa mengubah suai kod fungsi asal. Dengan menyediakan beberapa contoh kod konkrit, artikel ini berharap dapat membantu pembaca memahami konsep asas fungsi penghias dan cara menggunakannya. Menggunakan fungsi penghias mengurangkan pertindihan kod dan menjadikan kod lebih modular dan lebih mudah untuk diselenggara.
Atas ialah kandungan terperinci Cara menggunakan fungsi penghias dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!