تقنية

math.prod في بايثون: هل البداية صفر توقف المولد؟

صفر وثلاث قراءات
سجل القراءة. [1] [2]

حاصل الضرب لا يكشف وحده مقدار القراءة. [1] [2]

الخلاصة السريعة

لا؛ البداية صفر لا توقف قراءة مولدنا مبكرًا. [1] [2]

  • مولدنا المحدود يعطي الأعداد الصحيحة 5,7,9؛ بداية 1 في تحكم مستقل تعطي 315. [1] [2]
  • تعيد prod(g,start=0) العدد 0. [1] [2]
  • يصير سجل القراءة seen مساويًا [5,7,9]. [1] [2]
  • تعيد القراءة التالية العلامة done؛ نفدت القيم. [1] [2]
  • اختبرنا 3.12.14؛ قد يرفع مولد آخر استثناء. [1] [2]

المثال

import math
seen=[]
def values():
 for n in [5,7,9]:
  seen.append(n)
  yield n
g=values()
print(math.prod(g,start=0))
print(seen)
print(next(g,"done"))

[1] [2]

لماذا قُرئت القيم؟

حلقة الأعداد الصحيحة في المصدر تطلب العناصر المتتالية؛ لا تعود مبكرًا لأن الحاصل صفر. سجلنا يضاف إليه قبل كل توليد. ببداية 1 في تحكم مستقل، قرأنا القيم نفسها وأعدنا 315. [1] [2]

نفاد المولد بعد الحساب
قراءة لاحقة. [1] [2]

حدود الاستنتاج

نفاد المولد أثر مقصود. النتيجة العددية صفر لا تضمن غياب الاستثناءات أو الآثار. لم نفحص مولدًا غير منتهٍ أو كل الأنواع، ولم نقس السرعة. [1] [2]

المراجع

  1. CPython 3.12.14: prod
  2. Python 3.12: math.prod
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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