یک عاشق یادگیری و ساختن , از برنامه نویسی تا طراحی قطعات مکانیکی و حتی کمی هنری
کاربرد های decoration در پایتون
![پایتون دکوریشن](https://files.virgool.io/upload/users/161878/posts/ax9ng761w9qv/nhv972d8k8ei.png)
سلام من مهدی پورکاظمی هستم با من همراه باشید تا با هم کمی کد بخوریم
پترنهای زیادی در دنیای برنامه نویسی برای کد نویسی تمیز و سادهسازی و سریعتر کردن روند توسعه و ... وجود دارد که استفادههای می شود ؛ با من همراه باشید تا کاربردهای دکوریشن در پایتون را بررسی کنیم
نکته : کدها قرار داده شده کمی زمان می برد تا بارگذاری گردد
دکوریشن چیست؟
در این جا من فقط کاربردهای ان را بررسی می کنم برای اطلاع بیشتر به این لینک مراجعه کنید
مثال های مفید از کاربردهای دکوریشن
- استفاده برای بررسی سرعت اجرای یک فانکشن
- آسان تر ساختن مسیر بررسی مشکل (دیباگ کردن)
- توقف اجرای برنامه برای چند ثانیه
- نمونه ای از طراحی الگوی (plug-in design pattern)
مثال اول (timer)
برای هر برنامه نویسی نگاه کردن به کد راحت تر از خواندن توضیح متن اون هست با این حال توضیح کد در درون خود کد برای فهم بیشتر قرار داده شده است
تابع دکوریتور با استفاده از ماژول تایمر و با فراخوانی آن قبل و بعد از فراخوانی تابع ورودی مقدار زمانی که اجرای تابع ورودی صرف می کند به همراه پاسخ آن در خروجی چاپ می گردد
مثال دوم (debugger)
استفاده از تابعی که در هر مرحله روند اجرای کد و یا ورودی و خروجی کد و ... نمایش دهد نه تنها از ایجاد خطا جلوگیری می کند بلکه باعث فهم بهتر از کد و برنامه نویس بهتری شدن می گردد
تابع دکوریتور با استفاده از حلقه تکرار بر روی مقادیر ورودی، مقادیر ورودی تابع را در یک لیست ذخیره کرده و به همراه اسم تابع در خط 14 قبل از صدا زدن تابع چاپ می کند پس از صدا زدن تابع و دریافت مقدار بازگشتی(اگر موجود باشد) در خط بعدی به همراه اسم تابع چاپ می شود
مثال سوم (slow down)
استفاده از این تابع در زمانی که انتظار داریم که نتیجه یک درخواست بر روی شبکه بازگردد و یا استفاده از تردها مفید هست لازم به ذکر است که مثال های ذکر شده برای تمرین و فهم بیشتر است
در این مثال تابع ورودی به تابع دکوریشن قبل از صدا زدن به کمک تابع تایم یک ثانیه متوقف می گردد.
مثال چهارم(plug-in)
پیاده سازی الگوریتم پلاگین با استفاده از دکوریشن ، به عنوان یک مثال ساده برای استفاده بهتر از دکوریشن در ادامه قرار دارد.
در این مثال تابع ورودی به تابع دکوریشن در یک دیکشنری ذخیره می گردد که اسم تابع کلید آن و خود تابع به عنوان مقدار در دیکشنری که به صورت گلوبال تعریف شده ذخیره می شود و برای اجرای توابع ذخیره شده باید آنها را از لیست خارج کرده و صدا زد
مطلبی دیگر از این انتشارات
بهترین زبانها برای برنامه نویسی
مطلبی دیگر از این انتشارات
تفاوت بین Application Class و Singleton چیست؟
مطلبی دیگر از این انتشارات
چگونه از نشت حافظه در برنامه نویسی اندروید جلوگیری کنیم؟