إنتاج القيم عند الحاجة بإستخدام yield
ال yield بتخلي الدالة تنتج قيمة في كل خطوة بدل ما تجهز قائمة بكل القيم قبل ما تبدأ تستخدمها
إنشاء Generator بسيط
الدالة بتتوقف عند yield وبتكمل من نفس المكان لما تطلب القيمة التالية
def countdown(start):
while start > 0:
yield start
start -= 1
numbers = countdown(3)
print(next(numbers))
print(next(numbers))
print(next(numbers))النتيجة
3
2
1المرور على القيم بإستخدام Loop
ال Loop بتطلب القيم لحد ما الدالة تخلص وبعدها نفس ال Generator بيكون مستهلك
def countdown(start):
while start > 0:
yield start
start -= 1
numbers = countdown(3)
for number in numbers:
print(number)
print(list(numbers))النتيجة
3
2
1
[]ملحوظة
ال next بترفع StopIteration بعد نهاية القيم وال Loop بتتعامل مع النهاية تلقائيا