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

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

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

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

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

ژنراتورهایی که تولید را متوقف می کنند

دسته بندی :اخبار سایت 11 مارس 2023 علیرضا بابامرادی 73
ژنراتورهایی که تولید را متوقف می کنند

ژنراتورهایی که تولید را متوقف می کنند

در این بخش ما با یک بار نوشتن یک مولد بی نهایت شروع کردیم از نو. تا به حال احتمالاً به این فکر کرده اید که چگونه یک ژنراتور بنویسید که پس از مدتی به جای ادامه دادن و ادامه دادن، تولید ارزش را متوقف می کند به یاد داشته باشید، در تکرارکننده کلاسی ما توانستیم پایان را نشان دهیم تکرار با بالا بردن دستی یک استثنا StopIteration. زیرا برای همیشه. ژنراتورها کاملاً با تکرارکننده‌های مبتنی بر کلاس سازگار هستند، هنوز هم همینطور است خوشبختانه، ما به عنوان برنامه نویس با یک رابط کاربری زیباتر کار می کنیم زمان در اطراف. ژنراتورها به محض کنترل، تولید مقادیر را متوقف می کنند جریان به هر وسیله ای غیر از a از تابع مولد باز می گردد آنچه در پشت صحنه اتفاق می افتد بیانیه بازده این بدان معناست که دیگر نیازی نیست که اصلا نگران افزایش StopIteration باشید! در اینجا یک مثال است:yield value yield value yield valueتوجه کنید که چگونه این تابع مولد هیچ نوع حلقه ای را شامل نمی شود. در واقع بسیار ساده است و فقط از سه عبارت بازدهی تشکیل شده است. اگر یک بازده به طور موقت اجرای تابع را به حالت تعلیق در آورد و عبور کند یک مقدار را به تماس گیرنده برگردانید، وقتی به انتهای آن برسیم چه اتفاقی خواهد افتاد این ژنراتور؟ بیایید دریابیم:>>> for x in repeat_three_times(‘Hey there’): def repeat_three_times(value): ‘Hey there’ … print(x) ‘Hey there’ ‘Hey there’همانطور که انتظار داشتید،

این مولد پس از سه بار تکرار، تولید مقادیر جدید را متوقف کرد

می توانیم فرض کنیم که این کار را با بالا بردن انجام داده است تابع. اما برای اطمینان، بیایید آن را با آزمایش دیگری تأیید کنیم:>>> iterator = repeat_three_times(‘Hey there’) یک استثناء StopIteration زمانی که اجرا به پایان می رسد ‘Hey there’ >>> next(iterator) >>> next(iterator) >>> next(iterator) ‘Hey there’ ‘Hey there’ StopIteration >>> next(iterator) >>> next(iterator) StopIteratioدر اینجا یکی دیگر از ویژگی‌های عالی تکرارکننده‌ها در پایتون وجود دارد: با زنجیر کردن چندین تکرارکننده به یکدیگر، می‌توانید پردازش داده‌های بسیار کارآمد را در خطوط لوله بنویسید. اولین باری که این الگو را در یک PyCon دیدم ارائه توسط دیوید بیزلی، ذهن من را متحیر کرد. زنجیر Iterator اگر از توابع و ژنراتور مولد پایتون استفاده می کنید عبارات، شما در حال ایجاد زنجیره های تکرار شونده مختصر و قدرتمند خواهید بود هیچ وقت در این فصل متوجه خواهید شد که این تکنیک چگونه است در عمل و چگونه می توانید از آن در برنامه های خود استفاده کنید. به عنوان یک جمع بندی سریع، مولدها و عبارات مولد نحوی هستند شکر برای نوشتن تکرار کننده در پایتون. آنها بسیاری از موارد را انتزاع می کنند کد boilerplate هنگام نوشتن تکرارکننده های کلاس محور مورد نیاز است. در حالی که یک تابع منظم یک مقدار بازگشتی واحد تولید می کند، ژنراتورها دنباله ای از نتایج را تولید کند. می توان گفت آنها یک جریان تولید می کنند به عنوان مثال، من می توانم مولد زیر را که تولید می کند تعریف کنم مجموعه ای از مقادیر صحیح از یک تا هشت با نگه داشتن یک شمارنده در حال اجرا و هر بار که next() روی آن فراخوانی می شود یک مقدار جدید به دست می دهد:def integers(): ارزش ها در طول عمرشان. for i in range(1, 9): yield i

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

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

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

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

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

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

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

لینک کوتاه:
0