cycle تحفظ القيم التي تقرؤها؛ بعد نفاد المدخل تعيد القيم المحفوظة. [1]
الخلاصة السريعة
لا؛ تعيد القيم المحفوظة هنا. [1]
- cycle تحفظ القيم التي تقرؤها؛ بعد نفاد المدخل تعيد القيم المحفوظة. [1]
- على CPython 3.12.14، مولدنا يعطي 2 و5، ويسجلهما قبل yield؛ seen فارغة عند البناء. [1]
- أول طلب يعطي 2 وسجلًا [2]؛ الثاني يعطي 5 وسجلًا [2,5]. [1]
- الطلبات الثلاثة التالية تعطي 2 ثم 5 ثم 2؛ seen تبقى [2,5]، والمولد مستنفد. [1]
- تحكم بمولد جديد: 2 ثم 5 ثم done عند النفاد؛ نطلب خمس نتائج فقط من cycle. [1]
قيم محفوظة
cycle تحفظ القيم التي تقرؤها؛ بعد نفاد المدخل تعيد القيم المحفوظة. [1]
المولد والسجل
على CPython 3.12.14، مولدنا يعطي 2 و5، ويسجلهما قبل yield؛ seen فارغة عند البناء. [1]
الدورة الأولى
أول طلب يعطي 2 وسجلًا [2]؛ الثاني يعطي 5 وسجلًا [2,5]. [1]
from itertools import cycle def rows(log): for value in [2,5]: log.append(value) yield value seen=[] g=rows(seen) out=cycle(g) print(seen) for _ in range(5): print(next(out),seen) [1]
![بعد الطلب الثاني وحتى الخامس، سجل المولد [2,5].](https://images.bahralolom.com/assets/local-2000-20261012/BA-1491/python-cycle-cache-values.png)
الإعادة والتحكم
الطلبات الثلاثة التالية تعطي 2 ثم 5 ثم 2؛ seen تبقى [2,5]، والمولد مستنفد. [1]
print(next(g,"done")) control_log=[] direct=rows(control_log) print(next(direct,"done"),next(direct,"done"),next(direct,"done")) [1]
تحكم بمولد جديد: 2 ثم 5 ثم done عند النفاد؛ نطلب خمس نتائج فقط من cycle. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
