generator در پایتون

 generator چیست؟

generator نوعی تابع می‌باشد که اجازه می‌دهند در طول زمان یک دنباله تولید نمود. برای استفاده از syntax ،generator متفاوتی در نظر گرفته شده است، به این صورت که از دستور yield استفاده می‌شود. مزیت اصلی آن استفاده کمتر از حافظه و سرعت بیشتر است. عملکرد generator مانند range می‌باشد و برای به دست آوردن مقادیر باید از list(range(l)) استفاده کنیم.

 نحوه ایجاد generator

برای ایجاد دنباله‌ایی از اعداد می‌توان از دو روش استفاده کرد. روش اول به این صورت می‌باشد که یک تابع ایجاد می‌کنیم، سپس دنباله‌ایی از اعداد را به وسیله دستور for ایجاد می‌کنیم و این اعداد و یا تغییر یافته این اعداد را با متد append به یک لسیت خالی اضافه می‌کنیم. سپس لیست مدنظر را با ذستور return بازمی‌گردانیم. در این صورت هرگاه تابع create_cube را فراخوانی کنیم، لیست مورد نظر چاپ می‌شود. همچنین اگر تابع create_cube را درون یک for لوپ قرار دهیم. می‌توان به آیتم‌های لیست موردنظر دسترسی پیدا کرد.

ایجاد generator در پایتون

 

در روش دوم برای ایجاد دنباله‌ایی از اعداد از generator استفاده می‌کنیم. به این صورت که یک تابع ایجاد می‌کنیم، سپس دنباله‌ایی از اعداد را به وسیله دستور for ایجاد می‌کنیم و این اعداد و یا تغییر یافته این اعداد را با دستور yield اجرا می‌کنیم. در کد زیر هنگام فراخوانی تابع مقادیر مورد نظر چاپ نمی‌شود. بنابراین برای به دست آوردن مقادیر باید از list استفاده کنیم.

نحوه ایجاد generator

نحوه ایجاد دنباله فیبوناچی به وسیله generator

دنباله فیبوناچی را می‌توان به وسیله generator اجرا کرد. دنباله فیبوناچی به این صورت می‌باشد که عدد اول و دوم یک می‌باشد و پس از آن هر عدد از مجموع همان عدد با عدد قبلی خود به دست می‌آید. در کد زیر ایتدا دو عدد اول را برابر دبا یک قرار داده‌ایم. سپس به وسیله یک لوپ و دستور yield یک generator ایجاد کرده‌ایم. فیبوناجی با generator

نحوه استفاده از دستور next در generator

در توابع generator می‌توان در هنگام فراخوانی از دستور next استفاده کرد. در این حالت خروجی تابع با هربار print گرفتن از دستور next به صورت یکی یکی ایجاد می‌شود. در کد زیر به دلیل استفاده از range(3)، تا عدد ۳ باید print شود. بنابراین اگر از دستور next بیشتر از ۳ بار استفاده کنیم با خطای StopIteration روبرو می‌شویم.

دستور next در generator

 

اگر برروی string دستور next را اجرا کنیم، می‌بینیم که با خطا مواجه می‌شویم زیرا stringها iterator نیستند. در این صورت اگر از دستور iter استفاده کنیم و پس از آن دوباره دستور next را اجرا کنیم، می‌بینیم که اجزای string نمایش داده می‌شود.

دستور next در generator

 

نحوه استفاده از generator

در کد زیر با استفاده از generator توان دو اعداد را تا مقدار دلخواه ایجاد می‌کنیم. برای نمایش اعداد مورد نظر، تابع فراخوانی شده را درون یک for لوپ قرار می دهیم. عدد ورودی تابع gen_squares، تعداد دفعاتی که می خواهیم این لوپ ادامه داشته باشد را مشخص می‌کند.

نحوه استفاده از تابع generator

 

در کد زیر یک generator می‌سازیم که به تعداد دلخواه عدد صحیح به صورت رندوم بین دو عدد ایجاد نماید. برای ایجاد یک عدد صحیح رندوم، از کتابخانه random تابع randint را استفاده می‌کنیم. این تابع یک عدد صحیح بین دو عدد low و high به صورت رندم انتخاب می‌کند. همچنین اعداد low و high در داخل بازه انتخابی هستند.

استفاده از generator در تولید اعداد تصادفی

 

برای آشنایی بیشتر با مبحث generator و نحوه کار با آن‌ها می‌توانید به دوره جامع آموزش زبان برنامه‌نویسی پایتون  آکادمی رسا مراجعه کنید.

0/5 (0 Reviews)

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

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

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست