5️⃣ مثالهای کاربردی
🔸 تولید اعداد اول:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def prime_generator(limit):
for num in range(limit):
if is_prime(num):
yield num
for prime in prime_generator(20):
print(prime)
# Khoroji: 2, 3, 5, 7, 11, 13, 17, 19
🔸 ژنراتور برای دادههای بزرگ:
def large_data_generator():
for i in range(1000000):
yield i * 2
gen = large_data_generator()
for _ in range(5):
print(next(gen))
# Khoroji: 0, 2, 4, 6, 8
🔸 فیلتر کردن با ژنراتور:
numbers = [1, 2, 3, 4, 5, 6]
odds_gen = (x for x in numbers if x % 2 != 0)
print(list(odds_gen)) # Khoroji: [1, 3, 5]
—-—-—-—-—-—-—-—-—-—-—
6️⃣ نکات حرفهای
🔸 صرفهجویی در حافظه:
همیشه ژنراتورها رو به فهرست ترجیح بده برای دادههای بزرگ، مگر اینکه واقعاً به فهرست نیاز داشته باشی.
🔸 خوانایی کد:
اسمهای معنیدار برای ژنراتورها انتخاب کن (مثل evens_gen به جای g).
🔸 ترکیب با itertools:
برای کارهای پیچیدهتر، از ماژول itertools استفاده کن:
from itertools import islice
gen = (x**2 for x in range(100))
print(list(islice(gen, 5))) # Khoroji: [0, 1, 4, 9, 16]
🔸 مدیریت پایان ژنراتور:
همیشه آماده خطای StopIteration باش یا از حلقه for استفاده کن که خودش این خطا رو مدیریت میکنه.
💯 @PythonForYou 🧑💻👩💻