❓ چرا ژنراتورها؟ مزایا و کاربردها 🤔
🔸 صرفهجویی تو حافظه:
ژنراتورها مقادیر رو یکییکی تولید میکنن، نه یهجا:
import sys
gen = (x for x in range(1000000))
print(
sys.getsizeof(gen)) # ~104 bytes
lst = [x for x in range(1000000)]
print(
sys.getsizeof(lst)) # ~9000000 bytes
🔸 پشتیبانی از دادههای بینهایت:
میتونی دنبالههای نامحدود بسازی:
def infinite_numbers():
num = 0
while True:
yield num
num += 1
gen = infinite_numbers()
for _ in range(5):
print(next(gen))
# Khoroji: 0, 1, 2, 3, 4
🔸 ترکیب با توابع داخلی:
ژنراتورها با sum، max و غیره خوب کار میکنن:
print(sum(x for x in range(100))) # Khoroji: 4950
💯 @PythonForYou 🧑💻👩💻