الوحدة functools‎ في بايثون

من موسوعة حسوب
مراجعة 20:49، 1 يوليو 2018 بواسطة عبد-الهادي-الديوري (نقاش | مساهمات) (←‏functools.wraps()‎)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تُقدّم الوحدة functools دوال عاليّة الرّتبة (higher-order functions)، وهي دوال تستقبل دوالا أخرى، تُغيّرها، أو تُعيد دوال أخرى. وعلى العموم، يُمكن لأيّ كائن قابل للاستدعاء أن يُعامل مُعاملة الدّالة عند استخدام هذه الوحدة.

تُعرّف الوحدة functools الدّوال التّاليّة:

functools.cmp_to_key()‎

تُحوّل دالّةَ مُقارنة (comparison function) إلى دالّة مفتاح (key function).

functools.partial()‎

تُستعمل لإنشاء دالّة جزئيّة من دالّة بتمرير قيم افتراضيّة ثابتة لها.

functools.reduce()‎

تُطبّق دالّةً تأخذ مُعاملين بتراكب لعناصر الكائن القابل للتّكرار المُعطى، من اليسار إلى اليمين لتخفيض العناصر إلى قيمة واحدة (كجمع عدّة مبالغ للحصول على مبلغ إجماليّ واحد مثلًا).

functools.update_wrapper()‎

تُحدّث دالّةً مُحيطةً (wrapper) لتبدوَ مثل الدّالة المُحاطة (wrapped).

functools.lru_cache()‎

مُزخرفٌ يُحيط دالّة بكائن قابل للاستدعاء مُتذكّر (memoizing callable).

functools.total_ordering()‎

يقوم بزخرفة صنف يُعرّف تابعًا أو عدّة توابع ترتيب مُقارنة غنيّة (rich comparison ordering methods)، ويقوم بإضافة بقيّة توابع المُقارنة. يُبسّط هذا الجهد المبذول في تحديد جميع عمليّات المُقارنة الغنيّة المُمكنة.

functools.singledispatch()‎

تُحوّل دالّةً عاديّة إلى دالّة عموميّة وحيدة الإرسال (single-dispatch generic function).

functools.wraps()‎

تُحدّث دالّة مُحيطةً لتبدوَ مثل الدّالة المُحاطة.

functools.partialmethod()‎

تعيد واصفًا يتصرّف مثل كائنات partial، إلّا أنّه مُصمّم ليُستخدم كتعريف تابع (method definition) عوضًا عن أن يكون قابلا للاستدعاء (callable) مُباشرة.

مصادر