Theme
Primary Color

إنتاج القيم عند الحاجة بإستخدام 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 بتتعامل مع النهاية تلقائيا

python شرح