tgoop.com/lython/67
Last Update:
✅ا Decorators یکی از قابلیتهای پیشرفته و بسیار قدرتمند پایتون هستند که برای تغییر یا افزایش قابلیتهای توابع یا کلاسها استفاده میشوند، بدون اینکه نیاز به تغییر کد اصلی آنها باشد. بیایید به طور کامل با این مفهوم آشنا شویم.
◀️ا Decorators در واقع توابعی هستند که به عنوان ورودی یک تابع دیگر را میگیرند و یک تابع جدید برمیگردانند که معمولاً رفتار تابع ورودی را تغییر میدهد یا بهبود میبخشد.
چرا از Decorators استفاده میکنیم؟
ا Decorators به ما این امکان را میدهند که:
کد قابل استفاده مجدد بنویسیم: میتوانیم منطق اضافی مانند ثبت لاگ، احراز هویت، بررسی نوع دادهها و ... را در یک مکان مرکزی قرار دهیم.
جداسازی منطق: میتوانیم منطق Decorators را از منطق اصلی تابع جدا کنیم.
کاهش تکرار کد: با استفاده از Decorators میتوانیم از نوشتن کد تکراری در مکانهای مختلف جلوگیری کنیم.
مثال ساده از Decorators
فرض کنید میخواهیم یک Decorators بنویسیم که زمان اجرای یک تابع را اندازهگیری کند. ابتدا، یک تابع Decorators تعریف میکنیم:
import time
def time_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Execution time of {func.__name__}: {end_time - start_time} seconds")
return result
return wrapper
حالا میتوانیم از این Decorators برای یک تابع استفاده کنیم:
@time_decorator
def example_function():
time.sleep(2)
print("Function executed")
example_function()
توضیح کد
تعریف Decorators: time_decorator یک تابع است که تابع دیگری (func) را به عنوان ورودی میگیرد.
تعریف یک تابع داخلی (wrapper): این تابع داخلی تابع اصلی را احاطه میکند و وظیفه اندازهگیری زمان اجرای تابع اصلی را بر عهده دارد.
استفاده از @time_decorator: با استفاده از @time_decorator قبل از تعریف تابع example_function، تابع example_function با Decorators پیچیده میشود. حالا هر وقت example_function فراخوانی شود، در واقع wrapper اجرا میشود.
نتیجه
هنگامی که example_function را فراخوانی میکنیم، خروجی به صورت زیر خواهد بود:
Function executed
Execution time of example_function: 2.002345323562622 seconds
همانطور که میبینید، Decorators زمان اجرای تابع را محاسبه و چاپ میکند، در حالی که خود تابع اصلی بدون تغییر باقی میماند.
Decorators در پایتون قابلیتهای بسیار بیشتری دارند و میتوانند به شکلهای پیچیدهتری استفاده شوند، اما این مثال ساده به شما یک دید کلی از نحوه عملکرد آنها میدهد.
@lython
BY روزمرگی های یک برنامه نویس
Share with your friend now:
tgoop.com/lython/67