دکوراتور در پایتون | بررسی ساختار دکوراتور
دکوراتور در پایتون ابزاری قدرتمند برای افزودن یا تغییر عملکرد توابع بدون تغییر در کد اصلی است. در این مقاله با مفهوم و کاربردهای دکوراتور آشنا میشوید.
در زبان برنامهنویسی پایتون، دکوراتورها (Decorators) ابزاری قدرتمند هستند که امکان افزودن عملکرد جدید به توابع یا کلاسها را بدون تغییر کد اصلی آنان، فراهم میکنند. دکوراتورها معمولاً برای مدیریت جنبههای مختلف برنامه مانند افزایش قابلیت استفاده، افزودن ویژگیهای اضافی، و یا سادهسازی کد استفاده میشوند.در این مقاله از نوین تک، به بررسی دکوراتورها و کاربردهای آنها میپردازیم تا به شما در نوشتن برنامههای کارآمدتر و تمیزتر کمک کنیم.
دکوراتور در پایتون چیست؟
دکوراتور یک تابع است که تابع دیگری را میگیرد و بدون تغییر کد اصلی، رفتار آن را گسترش میدهد. دکوراتورها در پایتون برای بهبود کارایی، کاهش تکرار کد و سهولت در دیباگینگ مورد استفاده قرار میگیرند.
ساختار دکوراتور
یک دکوراتور معمولاً تابعی است که یک تابع دیگر را به عنوان ورودی میگیرد، اما قبل از اینکه آن تابع اجرا شود، به نوعی آن را اصلاح میکند. مثلاً میتوانیم زمان اجرای یک تابع را بررسی کنیم یا قبل و بعد از اجرای آن پیامی نمایش دهیم.
مثال ساده از دکوراتور
بیایید یک مثال ساده از دکوراتور را بررسی کنیم:
def my_decorator(func): def wrapper(): print("قبل از اجرای تابع") func() print("بعد از اجرای تابع") return wrapper
در اینجا، دکوراتور my_decorator
تابعی به نام wrapper
را تعریف میکند که قبل و بعد از اجرای تابع ورودی func
، چند خط کد را اجرا میکند. در اینجا، وقتی که شما func()
را فراخوانی میکنید، قبل و بعد از آن پیغامهایی نیز چاپ میشود.
استفاده از دکوراتور
برای استفاده از یک دکوراتور، میتوانیم از علامت @
استفاده کنیم. در ادامه، مثالی برای نمایش نحوه استفاده از دکوراتور:
@my_decorator def say_hello(): print("سلام!") say_hello()
در هنگام فراخوانی say_hello()
، خروجی به شکل زیر خواهد بود:
قبل از اجرای تابع سلام! بعد از اجرای تابع
دکوراتور با آرگومانها
دکوراتورها همچنین میتوانند به توابعی که آرگومان دارند نیز اعمال شوند. در این صورت، باید دکوراتور را به گونهای طراحی کنیم که بتواند این آرگومانها را دریافت کند. مثلاً:
def repeat(num_times): def decorator_repeat(func): def wrapper(*args, **kwargs): for _ in range(num_times): func(*args, **kwargs) return wrapper return decorator_repeat
این دکوراتور تابع repeat
تعداد دفعاتی که باید تابع اصلی اجرا شود را مشخص میکند. حالا میتوانیم از آن استفاده کنیم:
@repeat(3) def say_hello(): print("سلام!") say_hello()
در اینجا، خروجی به شکل زیر خواهد بود:
سلام! سلام! سلام!
اگر میخواهید با دنیای برنامهنویسی آشنا شوید و پایههای محکم پایتون را یاد بگیرید، دوره پایتون جامع ما فرصتی عالی برای شماست!
جهت آشنایی و ثبت نام دوره پایتون جامع اینجا کلیک کنید!
کاربردهای دکوراتور
- مدیریت زمان اجرا: میتوان از دکوراتورها برای محاسبه زمان اجرای توابع استفاده کرد.
- اعتبارسنجی: میتوانیم با استفاده از دکوراتورها ورودیها را اعتبارسنجی کنیم.
- کَش (Caching): با استفاده از دکوراتورها میتوانیم نتایج محاسباتی توابع را ذخیره کنیم تا از اجرای مجدد آنها جلوگیری کنیم.
- کنترل دسترسی: دکوراتورها میتوانند برای مجوزدهی به کاربرها یا بررسی نقش آنها قبل از اجرای تابع استفاده شوند.
نتیجهگیری
دکوراتورها در پایتون ابزارهای مفیدی هستند که میتوانند به شکلی کارآمد و مرتب به شما کمک کنند تا کد خود را بهبود دهید. با استفاده از دکوراتورها، شما میتوانید کارهایی مانند افزودن ویژگیهای جدید یا تغییر رفتار توابع را به سادگی انجام دهید، بدون اینکه نیاز به تغییر کد اصلی تابع داشته باشید. این موضوع میتواند به بهبود انسجام و نگهداری کد شما کمک شایانی کند.
دیدگاهتان را بنویسید