کاربرد های decoration در پایتون

پایتون دکوریشن
پایتون دکوریشن

سلام من مهدی پورکاظمی هستم با من همراه باشید تا با هم کمی کد بخوریم
پترن‌های زیادی در دنیای برنامه نویسی برای کد نویسی تمیز و ساده‌سازی و سریعتر کردن روند توسعه و ... وجود دارد که استفاده‌های می شود ؛ با من همراه باشید تا کاربرد‌های دکوریشن در پایتون را بررسی کنیم

نکته : کدها قرار داده شده کمی زمان می برد تا بارگذاری گردد


دکوریشن چیست؟

در این جا من فقط کاربردهای ان را بررسی می کنم برای اطلاع بیشتر به این لینک مراجعه کنید

https://vrgl.ir/sT2ip

مثال های مفید از کاربرد‌های دکوریشن

  • استفاده برای بررسی سرعت اجرای یک فانکشن
  • آسان تر ساختن مسیر بررسی مشکل (دیباگ کردن)
  • توقف اجرای برنامه برای چند ثانیه
  • نمونه ای از طراحی الگوی (plug-in design pattern)

مثال اول (timer)

برای هر برنامه نویسی نگاه کردن به کد راحت تر از خواندن توضیح متن اون هست با این حال توضیح کد در درون خود کد برای فهم بیشتر قرار داده شده است

https://gist.github.com/mahdiPourkazemi/e7737bcd19bb0dcadd7276e58a052fe4

تابع دکوریتور با استفاده از ماژول تایمر و با فراخوانی آن قبل و بعد از فراخوانی تابع ورودی مقدار زمانی که اجرای تابع ورودی صرف می کند به همراه پاسخ آن در خروجی چاپ می گردد

مثال دوم (debugger)

استفاده از تابعی که در هر مرحله روند اجرای کد و یا ورودی و خروجی کد و ... نمایش دهد نه تنها از ایجاد خطا جلوگیری می کند بلکه باعث فهم بهتر از کد و برنامه نویس بهتری شدن می گردد

https://gist.github.com/mahdiPourkazemi/5b210bb7d000ef623c2087fdcd2b83cf

تابع دکوریتور با استفاده از حلقه تکرار بر روی مقادیر ورودی، مقادیر ورودی تابع را در یک لیست ذخیره کرده و به همراه اسم تابع در خط 14 قبل از صدا زدن تابع چاپ می کند پس از صدا زدن تابع و دریافت مقدار بازگشتی(اگر موجود باشد) در خط بعدی به همراه اسم تابع چاپ می شود

‌مثال سوم (slow down)

استفاده از این تابع در زمانی که انتظار داریم که نتیجه یک درخواست بر روی شبکه بازگردد و یا استفاده از تردها مفید هست لازم به ذکر است که مثال های ذکر شده برای تمرین و فهم بیشتر است

https://gist.github.com/mahdiPourkazemi/ba11b268cb47f7bbc7f1e45cf4a8f601

در این مثال تابع ورودی به تابع دکوریشن قبل از صدا زدن به کمک تابع تایم یک ثانیه متوقف می گردد.

مثال چهارم(plug-in)

پیاده سازی الگوریتم پلاگین با استفاده از دکوریشن ، به عنوان یک مثال ساده برای استفاده بهتر از دکوریشن در ادامه قرار دارد.

https://gist.github.com/mahdiPourkazemi/7ef94606dc53bcb142a0ae221392e4f2

در این مثال تابع ورودی به تابع دکوریشن در یک دیکشنری ذخیره می گردد که اسم تابع کلید آن و خود تابع به عنوان مقدار در دیکشنری که به صورت گلوبال تعریف شده ذخیره می شود و برای اجرای توابع ذخیره شده باید آن‌ها را از لیست خارج کرده و صدا زد


در کدهای قرار گرفته نکاتی وجود دارد و این نکات به صورت عمدی قرار گرفته تا خواننده ی عزیز علاوه بر کپی کردن و اجرای کدها در محیط پایتون خود، کمی نیز با دست به کیبورد شود و در حد یک خط تغییراتی در کد انجام دهد تا علاوه بر فهم بهتر از نتیجه ان نیز لذت ببرد


از انجایی که اینجانب به تازگی شروع به نوشتن در ویرگول کردن برای حمایت دنبال کردن و لایک کردن پست فراموش نشود