آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

یک وقفه سریع در پایتون

دسته بندی :اخبار سایت 21 فوریه 2023 علیرضا بابامرادی 103

به هر حال، اگر احساس می کنید که به یک استراحت سریع قهوه یا پیاده روی نیاز دارید در این نقطه در اطراف بلوک – این کاملاً طبیعی است. به نظر من بستن و دکوراتورها برخی از دشوارترین مفاهیم برای درک در پایتون هستند. لطفاً وقت خود را صرف کنید و نگران این نباشید که فوراً به این موضوع پی ببرید. پخش نمونه های کد در جلسه مترجم من می دانم که شما می توانید آن را انجام دهید! یک به یک اغلب کمک می کند تا همه چیز در خود فرو برود. شاید تعجب آور نباشد که می توانید بیش از یک دکوراتور را روی یک دکوراتور اعمال کنید تابع. این تأثیرات آنها را جمع می کند و این همان چیزی است که دکوراتورها را به عنوان بلوک های ساختمانی قابل استفاده مجدد بسیار مفید می کند. در اینجا یک مثال است. دو دکوراتور زیر خروجی را می پیچند رشته ای از تابع تزئین شده در تگ های HTML. با نگاه کردن به چگونگی تگ ها تو در تو هستند، می توانید ببینید پایتون از کدام ترتیب برای اعمال چندگانه استفاده می کند دکوراتورها:def strong(func): استفاده از دکوراتورهای متعدد برای یک تابع return ‘<strong>’ + func() + ‘</strong>’ def wrapper(): def emphasis(func): return wrapper def wrapper(): return wrapperحالا بیایید این دو دکوراتور را برداریم و همزمان آنها را روی عملکرد سلام خود اعمال کنیم. برای این کار می توانید از دستور @ معمولی استفاده کنید فقط چند دکوراتور را در بالای یک عملکرد واحد “پشته” کنید: @strong @emphasisdef greet(): return ‘<em>’ + func() + ‘</em>’ return ‘Hello!’ در صورت اجرای تابع تزئین شده، انتظار دارید چه خروجی ببینید؟ آیا دکوراتور @emphasis ابتدا تگ <em> خود را اضافه می کند یا @strong را انجام می دهد اولویت دارند؟ در اینجا چیزی است که وقتی شما با تزئین شده تماس می گیرید اتفاق می افتد تابع:'<strong><em>Hello!</em></strong>’این به وضوح نشان می دهد که دکوراتورها به چه ترتیبی اعمال شده اند: از پایین به بالا. ابتدا تابع ورودی توسط @emphasis پیچیده شد دکوراتور، و سپس تابع (تزیین شده) حاصل پیچیده شد >>> greet() برای اینکه به من کمک کند این ترتیب از پایین به بالا را به خاطر بسپارم، دوست دارم این را انباشته دکوراتور be havior بنامم. شما شروع به ساخت پشته در پایین می کنید و سپس به اضافه کردن بلوک های جدید در بالا ادامه دهید تا به سمت بالا حرکت کنید. اگر مثال بالا را تجزیه کنید و از دستور @ برای اعمال اجتناب کنید دکوراتورها، زنجیره ای از تابع دکوراتور فراخوانی می کند به این صورت است:decorated_greet = strong(emphasis(greet)) دوباره توسط دکوراتور @strong. سپس تابع پیچیده حاصل دوباره توسط قوی پیچیده می شود دکوراتور باز هم می بینید که دکوراتور تاکیدی ابتدا اعمال می شود و این همچنین به این معنی است که سطوح عمیق انباشته دکوراتور در نهایت خواهد بود فراخوانی تابع در عمل، این معمولاً مشکلی نخواهد بود، اما بر عملکرد تأثیر می گذارند زیرا مدام تو در تو اضافه می کنند اگر روی کدهای پرفورمنس کار می کنید که اغلب از دکوراسیون استفاده می کند، باید به خاطر داشته باشید.

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

  • چنانچه دیدگاهی توهین آمیز باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0