Generator در پایتون چگونه کار می‌کند

خلاصه
1405/06/05

:کلاس `Generator` در پایتون با استفاده از کلمه کلیدی `yield` کار می‌کند تا یک **مولد (Generator)** بسازد. به جای اینکه کل مجموعه داده را در حافظه بارگذاری کند، مولدها به صورت

Generator در پایتون چگونه کار می‌کند

:کلاس `Generator` در پایتون با استفاده از کلمه کلیدی `yield` کار می‌کند تا یک **مولد (Generator)** بسازد.

به جای اینکه کل مجموعه داده را در حافظه بارگذاری کند، مولدها به صورت **تنبل‌کننده (Lazy)** کار می‌کنند؛ یعنی مقادیر را فقط زمانی که درخواست شوند، یکی یکی تولید و برمی‌گردانند.

**نکات اصلی:**

1. **استفاده از `yield`**: هر تابعی که شامل دستور `yield` باشد، به‌جای بازگشت یک مقدار نهایی (با `return`)، یک مولد ایجاد می‌کند.
2. **اجرایی بودن**: وقتی تابع فراخوانی می‌شود، اجرا نمی‌شود؛ بلکه یک شیء مولد (Generator Object) برمی‌گردد که قرار است در زمان نیاز مقادیر را تولید کند.
3. **تکرار**: برای دریافت مقادیر از آن، باید روی آن حلقه بزنید یا متدهای مانند `next()` و `list()` را استفاده کنید تا فرایند "اجرای مجدد" (resuming) تابع پس از هر بار توقف با `yield` انجام شود.

این روش باعث صرفه‌جویی چشمگیر در مصرف حافظه هنگام کار با دنباله‌های بسیار بزرگ می‌شود.