yield إنتاج من المولّد
آخر تحديث: 2026-09-22
yield إنتاج من المولّد
yield يحوّل الدالة إلى مولّد؛ وفي كل مرة يُستدعى next() تنفَّذ الدالة حتى موضع yield فتعيد القيمة وتتوقف مؤقتًا.
| التصنيف | الكلمات المفتاحية والعبارات |
|---|---|
| النوع | كلمة مفتاحية / عبارة |
| إصدار بايثون | all |
📝 الصياغة
yield [expression]
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
[0, 1, 2]
🏷️ كلمات مفتاحية / عبارات ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qما الفرق بين `yield` و`return`؟
Aينهي `return` الدالة ويُرجع قيمة؛ بينما يحوّل `yield` الدالة إلى مولد (generator). كل استدعاء `next()` يشغِّل الكود حتى `yield`، ويُرجع قيمة ويوقف التنفيذ؛ والاستدعاء التالي يستأنف من حيث توقف.
Qلماذا لا تُنفَّذ الدالة التي تحتوي `yield` عند استدعائها؟
Aلأن الاستدعاء ينشئ كائن مولد فقط. لا يبدأ جسم الدالة في العمل فعليًا حتى أول `next()` (أو حلقة `for`، أو تحويل إلى `list()`).
Qهل يمكن التكرار على مولد أكثر من مرة؟
Aلا. المولد يُستخدم مرة واحدة: بمجرد نفاد العناصر انتهى، وأي تكرار لاحق لن يُنتج شيئًا. للتكرار المتكرر، حوّل النتيجة أولاً إلى قائمة أو أنشئ مولدًا جديدًا.
Qماذا تعني `yield from`؟
A`yield from iterable` هي اختصار لـ `for x in iterable: yield x`. داخل المولد «تُفوّض» إلى مكرّر آخر، منتجة عناصره واحدًا تلو الآخر.