شعار زيفيرنت

دليل شامل لإغلاقات بايثون والبرمجة الوظيفية

التاريخ:

دليل شامل لإغلاقات بايثون والبرمجة الوظيفية

بايثون هي لغة برمجة متعددة الاستخدامات تدعم نماذج البرمجة المختلفة، بما في ذلك البرمجة الوظيفية. أحد المفاهيم الأساسية في البرمجة الوظيفية هو عمليات الإغلاق. في هذه المقالة، سوف نستكشف ما هي عمليات الإغلاق، وكيف تعمل في بايثون، وكيف يمكن استخدامها لكتابة تعليمات برمجية أكثر إيجازًا وفعالية.

ما هي عمليات الإغلاق؟

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

كيف تعمل عمليات الإغلاق في بايثون؟

في بايثون، يتم إنشاء عمليات الإغلاق عن طريق تحديد وظيفة متداخلة داخل وظيفة خارجية وإرجاع الوظيفة المتداخلة. يمكن للوظيفة المتداخلة بعد ذلك الوصول إلى المتغيرات من نطاق الوظيفة الخارجية، حتى بعد عودة الوظيفة الخارجية. إليك مثال لتوضيح ذلك:

"الثعبان
تعريف الدالة الخارجية (x):
تعريف الدالة الداخلية (ص):
العودة س + ص
إرجاع الوظيفة الداخلية

الإغلاق = الدالة الخارجية (10)
طباعة (إغلاق (5)) # الإخراج: 15
"`

في هذا المثال، تأخذ "الدالة_الخارجية" الوسيطة "x" وتعرّف "الوظيفة_الداخلية" بداخلها. تأخذ `الدالة_الداخلية` وسيطة `y` وترجع مجموع `x` و`y`. عندما نستدعي الدالة_الخارجية(10)`، فإنها تُرجع`الدالة_الداخلية`، والتي تم تعيينها للمتغير `الإغلاق`. يمكننا بعد ذلك استدعاء `closure(5)` للحصول على نتيجة `10 + 5`، وهي `15`.

فوائد استخدام عمليات الإغلاق

توفر عمليات الإغلاق العديد من الفوائد في برمجة بايثون:

1. تغليف البيانات: تتيح لك عمليات الإغلاق تغليف البيانات داخل إحدى الوظائف، مما يجعل الوصول إليها غير ممكن من خارج الوظيفة. وهذا يساعد في تحقيق خصوصية البيانات ويمنع التعديل العرضي للبيانات.

2. إمكانية إعادة استخدام الكود: تتيح عمليات الإغلاق إمكانية إعادة استخدام الكود من خلال السماح لك بتعريف وظيفة مرة واحدة واستخدامها عدة مرات مع قيم مختلفة للمتغيرات الموجودة في النطاق المتضمن.

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

البرمجة الوظيفية مع عمليات الإغلاق

ترتبط عمليات الإغلاق ارتباطًا وثيقًا بالبرمجة الوظيفية، وهو نموذج برمجة يركز على استخدام الوظائف النقية والبيانات غير القابلة للتغيير. في البرمجة الوظيفية، يتم التعامل مع الوظائف كمواطنين من الدرجة الأولى، مما يعني أنه يمكن تعيينها للمتغيرات، وتمريرها كوسيطات إلى وظائف أخرى، وإعادتها كقيم من وظائف أخرى.

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

فيما يلي مثال لدالة ذات ترتيب أعلى تأخذ دالة `f` وترجع دالة جديدة تطبق `f` مرتين على وسيطتها:

"الثعبان
مواطنه Apply_twice(f):
غلاف التعريف (x):
العودة و (و (خ))
عودة المجمع

مربع التحديد (x):
العودة س * س

Apply_square_twice = Apply_twice(مربع)
طباعة (apply_square_twice (2)) # الإخراج: 16
"`

في هذا المثال، `apply_twice` هي دالة ذات ترتيب أعلى تأخذ دالة `f` وترجع دالة جديدة `مجمع`. تطبق الدالة "المجمع" "f" مرتين على وسيطتها "x". نقوم بعد ذلك بتعريف دالة "مربع" تقوم بتربيع حجتها. أخيرًا، قمنا بإنشاء دالة جديدة `apply_square_twice` عن طريق استدعاء `apply_twice(square)`، ويمكننا استخدام `apply_square_twice` لتطبيق الدالة المربعة مرتين على قيمة معينة.

وفي الختام

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

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة