تقنية

cycle في بايثون: هل تعيد تشغيل المولد في كل دورة؟

خمس نتائج من cycle: 2،5،2،5،2.
خمس نتائج.

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].
سجل من قيمتين.

الإعادة والتحكم

الطلبات الثلاثة التالية تعطي 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]

المراجع

  1. Python cycle

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.