<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Alireza Ansari</title><link>https://virgool.ir/feed/@m_78645004</link><description></description><language>fa</language><pubDate>2026-11-11 15:20:11</pubDate><image><url>https://files.virgool.ir/upload/users/2415593/avatar/fZtW57.jpg</url><title>Alireza Ansari</title><link>https://virgool.ir/@m_78645004</link></image><item><title>Generator در زبان پایتون</title><link>https://virgool.ir/@m_78645004/generator-در-زبان-پایتون-cefwlkmqyecw</link><description>در پایتون، `generator` یک نوع خاص از توابع است که با استفاده از کلمه کلیدی `yield` به جای `return`، مقداری را به صورت فشرده و به صورت دینامیک تولید می‌کنند. با استفاده از `generator` می‌توانیم دنباله‌ای از مقادیر را تولید کنیم، به جای اینکه تمام مقادیر را در یک لیست یا تاپل ذخیره کنیم.برای تعریف یک `generator`، کافیست تابع مورد نظر را به صورت معمول تعریف کنید و در هر جایی که می‌خواهید مقدار تولید کنید، از `yield` استفاده کنید. به عنوان مثال، فرض کنید می‌خواهید یک تابع `fibonacci` بسازید که مقادیر دنباله فيبوناتچی را تولید کند:```pythondef fibonacci():    a, b = 0, 1    while True:        yield a        a, b = b, a + b```در این تابع، ابتدا دو متغیر `a` و `b` را با مقدار صفر و یک مقداردهی اولیه می‌کنیم. سپس در هر مرحله، مقدار `a` را با استفاده از `yield` تولید می‌کنیم و سپس مقدار `a` و `b` را به ترتیب برابر مقدار `b` و جمع دو مقدار قبلی تنظیم می‌کنیم.اکنون می‌توانیم با استفاده از `for` یا `next` از `generator` تولید شده، مقادیر دنباله فيبوناتچی را به ترتیب خوانده و استفاده کنیم. به عنوان مثال:```python&gt;&gt;&gt; fib = fibonacci()&gt;&gt;&gt; next(fib)0&gt;&gt;&gt; next(fib)1&gt;&gt;&gt; next(fib)1&gt;&gt;&gt; next(fib)2&gt;&gt;&gt; next(fib)3&gt;&gt;&gt; next(fib)5&gt;&gt;&gt; for i in range(10):...     print(next(fib))...81321345589144233377610```با استفاده از `generator` می‌توانیم کدهایی با بهره بیشتری نوشته و مصرف حافظه را کاهش دهیم، زیرا فقط مقادیر لازم را تولید می‌کنیم و تمام دنباله را به صورت یکجا در حافظه نگه نمی‌داریم.</description><category>Alireza Ansari</category><author>Alireza Ansari</author><pubDate>Wed, 19 Apr 2023 21:13:08 +0330</pubDate></item></channel></rss>