تقنية

length_hint في بايثون: هل NotImplemented تعني تقديرًا صفرًا؟

operator.length_hint; NoEstimate.__length_hint__:NotImplemented; own=NoEstimate(); length_hint(own,7):7; length_hint(own):0
تقدير غائب.

عند NotImplemented تُستعمل القيمة الافتراضية؛ الصفر تقدير معاد هنا. [1] [2] [3]

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

لا؛ النتيجة تتبع الافتراضي هنا. [1] [2] [3]

  • عند NotImplemented تُستعمل القيمة الافتراضية؛ الصفر تقدير معاد هنا. [1] [2] [3]
  • على CPython 3.12.14، الصنف NoEstimate يعرّف دالة __length_hint__ تعيد NotImplemented؛ لم نعرّف __len__ أو __iter__. [1] [2] [3]
  • own=NoEstimate()؛ length_hint(own,7) تعيد 7، بينما length_hint(own) تعيد الافتراضي 0. [1] [2] [3]
  • الواجهة تمرر default إلى PyObject_LengthHint؛ مسار NotImplemented يعيد الافتراضي، ومسار العدد صفر يعيد الصفر نفسه. [1] [2] [3]
  • تحكم: دالة __length_hint__ في ZeroEstimate تعيد 0؛ control=ZeroEstimate()؛ length_hint(control,7) تظل 0. لا نعد عناصر؛ الصفر هنا نتيجة الدالة، وليس إثباتًا أن الكائن فارغ. [1] [2] [3]

الافتراضي

عند NotImplemented تُستعمل القيمة الافتراضية؛ الصفر تقدير معاد هنا. [1] [2] [3]

تقدير غائب

على CPython 3.12.14، الصنف NoEstimate يعرّف دالة __length_hint__ تعيد NotImplemented؛ لم نعرّف __len__ أو __iter__. [1] [2] [3]

تبديل الافتراضي

own=NoEstimate()؛ length_hint(own,7) تعيد 7، بينما length_hint(own) تعيد الافتراضي 0. [1] [2] [3]

from operator import length_hint class NoEstimate: def __length_hint__(self):return NotImplemented own=NoEstimate() print(length_hint(own,7),length_hint(own)) [1] [2] [3]

operator.length_hint; ZeroEstimate.__length_hint__:0; control=ZeroEstimate(); length_hint(control,7):0; length_hint(control):0
تقدير صفر.

الصفر والتحكم

الواجهة تمرر default إلى PyObject_LengthHint؛ مسار NotImplemented يعيد الافتراضي، ومسار العدد صفر يعيد الصفر نفسه. [1] [2] [3]

class ZeroEstimate: def __length_hint__(self):return 0 control=ZeroEstimate() print(length_hint(control,7),length_hint(control)) [1] [2] [3]

تحكم: دالة __length_hint__ في ZeroEstimate تعيد 0؛ control=ZeroEstimate()؛ length_hint(control,7) تظل 0. لا نعد عناصر؛ الصفر هنا نتيجة الدالة، وليس إثباتًا أن الكائن فارغ. [1] [2] [3]

المراجع

  1. Python length_hint
  2. CPython LengthHint
  3. CPython operator

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

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