
دکوراتورها در پایتون یک ویژگی قدرتمند هستند که به شما اجازه میدن تا عملکرد توابع را تغییر دهید یا ویژگیهای اضافی به اونها اضافه کنید بدون اینکه کد اصلی تابع رو تغییر بدید. یک دکوراتور به شکل یک تابع عادی نوشته میشود که یک تابع دیگر رو به عنوان ورودی میگیره و یک تابع جدید رو برمیگردونه
برای نوشتن یک دکوراتور، شما از علامت @ به همراه نام دکوراتور برای تابع مورد نظر استفاده میکنید. به عنوان مثال، فرض کنید میخواهید یک دکوراتور بنویسید که یک پیغام قبل و بعد از اجرای تابع نمایش دهد. در ادامه یک مثال از یک دکوراتور ساده را مشاهده میکنید:
def message_decorator(func):def wrapper():print("Before function execution!")func()print("After function execution!")return wrapper@message_decoratordef display_message():print("Inside the function!")display_message()
در این مثال، دکوراتور my_decorator قبل از اجرای تابع say_hello یک پیام "Before function is called." را نمایش میدهد و بعد از اتمام اجرای آن تابع پیام "After function is called." را چاپ میکند. دکوراتورها به برنامه نویسان این امکان را میدهند تا تغییراتی را به صورت یکپارچه و قابل اعتماد به توابع اعمال کرده و کد خود را بهینهتر و خواناتر کنند.
استفاده از دکوراتورها میتواند کد را قدرتمندتر و قابل نگهداریتر کند. این روش به برنامه نویسان اجازه میده که کدهای تکراری و یا ویژگیهایی که برای چندین تابع مشترک هستند را به یک مکان مشترک خارج از توابع منتقل کنند و از طریق دکوراتورها به توابع موردنظر اعمال کنند.
با استفاده از دکوراتورها، امکان افزودن امکاناتی مانند اعتبارسنجی پارامترها، بررسی دسترسی کاربر، زمانبندی و ... به توابع فراهم میشود. این ویژگی انعطاف بیشتری به برنامه شما اضافه میکند و به شما اجازه میدهد تا به زحمت تکراری و ناکارآمد از کد خود دور شوید.
اهمیت دکوراتورها در پایتون از توانایی آنها در سادهسازی کد، افزایش قابلیتهای برنامهها، و افزایش خوانایی و قابلیت نگهداری کد برخوردار است. در نتیجه، از دکوراتورها برای اعمال تغییرات و افزودن ویژگیهای موردنیاز به توابع پایتون استفاده بهتری کرد.
در مورد return wrapperکه در پایان تعریف دکوراتور آمده است، این بخش نقش اصلی در اعمال تغییرات به توابع را ایفا میکند. وقتی که ما یک تابع را با یک دکوراتور به عنوان @decorator مشخص میکنیم، وقتی تابع فراخوانی میشود، در واقع از تابع بهعنوان ورودی به دکوراتور استفاده میشود.
در اینجا، wrapper نام یک تابع جایگزین است که در داخل دکوراتور تعریف میشود. این تابع جایگزین قرار است تغییراتی در تابع اصلی اعمال کند. وقتی دکوراتور به تابع اعمال میشود، به جای اجرای تابع اصلی، تابع wrapper اجرا میشود و این به ما اجازه میدهد تا خطاها، پیغامها یا عملکردهای دیگری را به تابع اضافه کنیم یا تغییر دهیم.
بنابراین، return wrapper در آخر دکوراتور نشان میدهد که تابع جدیدی که با تغییرات لازم از تابع اصلی ساخته شده است، به عنوان خروجی دکوراتور برگردانده شود. این روند به ما اجازه میده تا توابعمان رو به سادگی با تغییرات و ویژگیهای اضافی ارتقاء بدیم و کدهای پیچیدهتر را به شکلی سادهتر و قابل نگهداری تبدیل کنیم.
در حال بارگذاری نظرات...

تاریخ انتشار
تعداد نظرات
زمان خواندن
دورههایی پروژهمحور، بهروز و با پشتیبانی کامل. از صفر تا استخدام.
در حال بارگذاری دورهها...
دورههایی پروژهمحور، بهروز و با پشتیبانی کامل. از صفر تا استخدام.
در حال بارگذاری دورهها...