الوظائف الجزئية في بايثون

تسمح لنا الوظائف الجزئية بإصلاح عدد معين من وسائط الوظيفة وإنشاء وظيفة جديدة. سنحاول في هذه المقالة فهم مفهوم الوظائف الجزئية بأمثلة مختلفة بايثون .

ما هي الوظائف الجزئية واستخدام الوظائف الجزئية في بايثون؟

الوظائف الجزئية في بايثون هي وظيفة يتم إنشاؤها عن طريق إصلاح عدد معين من الوسائط لوظيفة أخرى. توفر بايثون وحدة مدمجة تسمى functools يتضمن وظيفة تسمى جزئية والتي يمكن استخدامها لإنشاء وظائف جزئية. ال partial تأخذ الدالة دالة قابلة للاستدعاء (عادةً دالة أخرى) وسلسلة من الوسائط ليتم ملؤها مسبقًا في الدالة الجزئية الجديدة. هذه الميزة تشبه ربط في C++ .

كيف يمكنك تنفيذ وظيفة جزئية في بايثون؟

تدعم الوظائف الجزئية كلاً من الوسائط الموضعية والكلمات الرئيسية لاستخدامها كوسائط ثابتة.

مثال 1

في هذا المثال نستخدم القيم الافتراضية لتنفيذ الوظيفة الجزئية. تبدأ القيم الافتراضية في استبدال المتغيرات من اليسار. في المثال، قمنا بملء الدالة مسبقًا ببعض القيم الثابتة لـ a b وc. وg() يأخذ وسيطة واحدة فقط، أي المتغير x.

Python
   from   functools   import   partial   # A normal function   def   f  (  a     b     c     x  ):   return   1000  *  a   +   100  *  b   +   10  *  c   +   x   # A partial function that calls f with   # a as 3 b as 1 and c as 4.   g   =   partial  (  f     3     1     4  )   # Calling g()   print  (  g  (  5  ))   

الإخراج:

 3145  

مثال 2

في المثال، استخدمنا القيم الثابتة ذات القيمة المحددة مسبقًا والتي قمنا فيها بتعيين قيم c وb ويأخذ add_part() وسيطة واحدة، أي المتغير a.

Python
   from   functools   import   *   # A normal function   def   add  (  a     b     c  ):   return   100   *   a   +   10   *   b   +   c   # A partial function with b = 1 and c = 2   add_part   =   partial  (  add     c   =   2     b   =   1  )   # Calling partial function   print  (  add_part  (  3  ))   

الإخراج:

 312  

استخدامات الوظائف الجزئية

  • التكامل مع المكتبات: يمكن استخدام الوظائف الجزئية لتخصيص سلوك وظائف أو أساليب الجهات الخارجية من خلال توفير وسائط جزئية ويمكن استخدامها لدمجها مع المكتبات الأخرى.
  • تبسيط عمليات الاسترجاعات: يمكن استخدام الوظائف الجزئية لإنشاء معالجات رد اتصال متخصصة عن طريق إصلاح بعض المعلمات الخاصة برد الاتصال وتوفير واجهة أكثر نظافة لبقية التعليمات البرمجية.
  • تحديد المعلمة: : يمكن أن تكون الوظائف الجزئية مفيدة جدًا عندما يكون لدينا دالة ذات معلمات متعددة ونرغب كثيرًا في استخدامها مع إصلاح بعض المعلمات. بدلًا من تمرير تلك المعلمات الثابتة بشكل متكرر، يمكننا إنشاء دالة جزئية واستدعائها مع الوسائط المتبقية.
  • الحد من الازدواجية: إذا كنا نستخدم نفس الوسائط لوظيفة ما في أماكن مختلفة، فإن إنشاء وظيفة جزئية بهذه الوسائط الثابتة يمكن أن يساعد في تقليل تكرار التعليمات البرمجية وجهود الصيانة.
  • الحجج الافتراضية: بايثون مدمج functools.partial يمكن استخدامها لتعيين القيم الافتراضية لوسيطات الوظيفة.
  • إمكانية إعادة استخدام الكود: يمكن استخدام الوظائف الجزئية لاستخلاص وظائف متخصصة من الوظائف العامة وبالتالي تساعدنا على إعادة استخدام الكود الخاص بنا.