يشغل بايثون

المرجع :
cd mon_projet

python -m venv mon_venv

source mon_venv/bin/activate

# Sur windows
mon_venv\Scripts\activate

deactivate

متطلبات التثبيت

pip install -r requirements.txt

البدء

أنماط تصميم GoF في بايثون

أنماط التصميم من GoF هي مجموعة من 23 نمط تصميم تم وصفها في كتاب "Design Patterns: Elements of Reusable Object-Oriented Software".

هذه قائمة بنماذج التصميم الخاصة بـ GoF

الاسم

الوصف

طريقة المصنع

أنشئ كائنات دون تحديد الفئة التي يجب إنشاؤها بدقة

المصنع المجرد

أنشئ عائلات من الكائنات المرتبطة أو التابعة دون تحديد فئتها الملموسة.

البنّاء

يفصل بناء كائن معقد عن تمثيله بحيث يمكن نفس عملية البناء إنشاء تمثيلات مختلفة.

نموذج أولي

ينشئ كائنات جديدة بنسخ نموذج موجود

ينغلتون

يحدّ من إنشاء فئة إلى كائن واحد

محول

يحوّل واجهة فئة إلى واجهة أخرى يتوقعها العميل.

جسر

يفصل تجريدًا عن تنفيذه بحيث يمكن لكليهما أن يتغيرا بشكل مستقل.

مُركب

قم بتركيب الكائنات في هياكل شجرية لتمثيل التدرجات الجزئية الكلية.

ديكور

قم بربط مسؤوليات إضافية بشكل ديناميكي بكائن.

واجهة

يوفر واجهة موحدة لمجموعة من الواجهات في نظام فرعي.

وزن الذبابة

يقلل من تكلفة إنشاء واستخدام الكائنات الخفيفة.

وكيل

يوفر بديلًا أو مساحة محجوزة لكائن آخر للتحكم في الوصول إليه.

سلسلة المسؤولية

يسمح لأكثر من كائن بمعالجة طلب

أمر

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

مترجم

قدّم تمثيلًا لقواعد لغة ما واستخدم هذا التمثيل لتفسير الجمل في هذه اللغة.

المُكرِّر

يوفر طريقة لتمرير العناصر بشكل متسلسل لكائن مجمّع دون كشف تمثيله الداخلي.

الوسيط

يتيح تقليل التبعيات المعقدة بين الكائنات من خلال جعلها تتواصل فقط عبر كائن وسيط.

ملاحظة

يوفر القدرة على استعادة كائن إلى حالته السابقة (بدون انتهاك التغليف).

مراقب

يحدد اعتمادًا من واحد إلى عدة بين الكائنات بحيث عندما يتغير حالة كائن، يتم إشعار جميع اعتماداته وتحديثها تلقائيًا.

الدولة

يسمح للكائن بتغيير سلوكه عندما تتغير حالته الداخلية

استراتيجية

يحدد عائلة من الخوارزميات، ويغلف كل واحد منها، ويجعلها قابلة للتبديل.

طريقة القالب

يحدد هيكل الخوارزمية في طريقة، مؤجلاً بعض الخطوات إلى الفئات الفرعية.

زائر

يسمح بتحديد عملية جديدة يتم إجراؤها على بنية كائنات دون تعديل فئات الكائنات التي تعمل عليها.

البرمجة الوظيفية

مكتبة

URL

الوصف

PyMonad

https://github.com/jasondelaat/pymonad

PyMonad هو تنفيذ لهياكل بيانات مونادية في بايثون مستند إلى لغات برمجة مثل هاسكال وF# مع تنفيذات لأنواع المونات الأكثر شيوعًا في البرمجة الوظيفية.https://www.miguelfarrajota.com/2021/06/monads-in-python-with-pymonad/[مقال]

PyFunctional

https://github.com/EntilZha/PyFunctional/

PyFunctional هي مكتبة Python للبرمجة الوظيفية التي توفر أدوات للعمل مع الوظائف النقية والمتكررات.

أدوات

https://toolz.readthedocs.io/en/latest/

Toolz هي مكتبة بايثون للبرمجة الوظيفية التي توفر أدوات للعمل مع الدوال النقية والتكرارات.

دالة.py

https://github.com/kachayev/fn.py

Fn.py` هو مكتبة Python للبرمجة الوظيفية التي توفر أدوات للعمل مع الوظائف النقية والمتكررة

جوز الهند

https://coconut-lang.org/

يضيف Coconut العديد من الميزات إلى Python للبرمجة الوظيفية، بما في ذلك مطابقة الأنماط.https://stackoverflow.com/questions/11909681/are-there-pattern-matching-functions-in-python-like-this[محادثة لطيفة]

الآثار الجانبية

الحلقات

# impérative way
result = []
for i in inputs:
    x = f(g(i))
    result.append(x)

# idiomatic way
result = map(comp(f,g), inputs)

Articles connexes