بايثون هي لغة برمجة عالية المستوى وموجهة للكائنات، وقد تم اختيارها مؤخرًا من قبل العديد من الطلاب وكذلك المحترفين نظرًا لتعدد استخداماتها وطبيعتها الديناميكية وقوتها، وأيضًا لأنها سهلة التعلم. ليس هذا فقط، بل إنها الآن ثاني أكثر اللغات المحبوبة والمفضلة بعد JavaScript ويمكن استخدامها في جميع المجالات التقنية تقريبًا، سواء كانت التعلم الآلي أو علم البيانات أو تطوير الويب أو التحليلات أو الأتمتة أو الاختبار أو الذكاء الاصطناعي وغير ذلك الكثير.
إن تعلم لغة بايثون سهل مقارنة بلغات البرمجة الأخرى عالية المستوى والموجهة للكائنات مثل جافا أو سي++، ولكنها تحتوي على بعض المفاهيم المتقدمة التي تكون مفيدة عند تطوير كود قوي وواضح ومُحسَّن للغاية وفعال ومُوحد. باستخدام هذه المفاهيم في الكود، ستتمكن من تقليل الأخطاء في الكود الخاص بك بالإضافة إلى زيادة كفاءته مما يجعلك مبرمج بايثون متمرسًا. لذا دعنا نلقي نظرة على هذه المفاهيم واحدة تلو الأخرى ونفهمها بالتفصيل!
دالة Map
تحتوي لغة بايثون على دالة مدمجة تسمى map()
والتي تسمح لنا بمعالجة جميع العناصر الموجودة في كائن قابل للتكرار دون استخدام بنية تكرارية بشكل صريح. عند استخدامها، تقوم بإرجاع كائن map والذي بدوره عبارة عن مُكرر. هذا الكائن map هو النتيجة التي تم الحصول عليها من خلال تطبيق الدالة المحددة على كل عنصر موجود في الكائن القابل للتكرار.
تعريف الدالة – required_answer = map(function, iterable)
تأخذ الدالة map()
وسيطتين:
- الوسيطة الأولى هي دالة سيتم تطبيقها على كل عنصر موجود في العنصر القابل للتكرار.
- الوسيطة الثانية هي العنصر القابل للتكرار نفسه الذي سيتم تعيين الدالة عليه.
itertools
تحتوي بايثون على مكتبة قياسية مذهلة تسمى itertools والتي توفر عددًا من الدوال التي تساعد في كتابة كود نظيف وسريع وفعال للذاكرة بسبب التقييم الكسول. إنها وحدة بايثون تنفذ كتل بناء متكررة مختلفة وتشكل معًا “جبر التكرار” مما يجعل من الممكن بناء أدوات بكفاءة في لغة بايثون. تعمل الدوال في itertools على التكرارات نفسها والتي بدورها تعيد تكرارات أكثر تعقيدًا. بعض الأمثلة على الدوال الموجودة في itertools هي: count()
و cycle()
و repeat()
و accumulator()
و product()
و permutations()
و combinations()
وما إلى ذلك، كل منها يأخذ مجموعة خاصة به من الحجج ويعمل عليها. يتم إنشاء النتيجة بشكل أسرع كثيرًا مقارنة بالنتائج التي تم تحقيقها عند استخدام الكود التقليدي.
دالة Lambda
دوال lambda في بايثون هي دوال صغيرة مجهولة المصدر حيث لا تحمل اسمًا ويتم تضمينها في سطر واحد من التعليمات البرمجية. تُستخدم الكلمة الأساسية “def
” لتعريف الدوال في بايثون ولكن دوال lambda يتم تعريفها بدلاً من ذلك بواسطة الكلمة الأساسية “lambda
“. يمكنها أخذ أي عدد من الوسائط، ولكن لا يمكن أن يكون عدد التعبيرات أكثر من واحد. إنها تجعل التعليمات البرمجية موجزة وسهلة القراءة للعمليات المنطقية البسيطة ومن الأفضل استخدامها عندما تحتاج إلى استخدام الدالة مرة واحدة فقط.
تعريف الدالة – require_answer = lambda ..arguments : expression
معالجة الاستثناءات
الاستثناءات هي أنواع من الأخطاء التي تحدث عند تنفيذ البرنامج وتغير التدفق الطبيعي للبرنامج. يمكن أن يكون أحد الأمثلة قسمة رقم على صفر أو الإشارة إلى فهرس خارج حدود قابل للتكرار. لذلك، نستخدم try وexcept وfinally للتعامل مع الاستثناءات في بايثون. تُستخدم الكلمة الأساسية try
لتغليف كتلة من التعليمات البرمجية التي قد تتسبب في حدوث أخطاء، وتُستخدم except
لتغليف كتلة من التعليمات البرمجية التي سيتم تنفيذها عند إثارة استثناء وتتعامل مع الخطأ، وfinally
تسمح لنا بتنفيذ التعليمات البرمجية مهما كان الأمر.
المزخرفات
المزخرفات هي جزء من البرمجة الفوقية في بايثون والتي تستخدم لإضافة دوال إضافية إلى الكود الموجود دون تغيير البنية الأصلية في وقت التجميع. إنها أشبه بدالة عادية في بايثون يمكن استدعاؤها وإرجاع قيمة قابلة للاستدعاء. فهي تأخذ دالة، وتعدلها بإضافة دالة، ثم تعيدها.
المجموعات
المجموعات في بايثون عبارة عن حاويات مدمجة للأغراض العامة مثل المجموعات والقوائم والقواميس. مجموعات بايثون عبارة عن وحدة تنفذ أنواع بيانات حاويات متخصصة. تتضمن المجموعات namedtuple()
وهي دالة لإنشاء فئات فرعية من القوائم تحتوي على حقول مسماة، وOrderedDict وهي فئة فرعية من القاموس تتذكر إدخالات الترتيب التي تمت إضافتها لأن قاموس بايثون غير مرتب، وCounter الذي يستخدم لحساب الكائنات القابلة للتجزئة، وChainMap الذي يستخدم لإنشاء عرض واحد لتعيينات متعددة، إلخ.
المولدات
المولدات في بايثون هي نوع خاص من الدوال التي لا تقوم بإرجاع قيمة واحدة، بل تقوم بإرجاع كائن متكرر عبارة عن تسلسل من القيم. إنها أداة مساعدة لإنشاء دالة متكررة خاصة بك. تُستخدم الكلمة الأساسية yield
في دالة المولد بدلاً من الكلمة الأساسية return
التي توقف تنفيذها مؤقتًا. الفرق بين yield وreturn هو أن return تنهي الدالة ولكن yield توقف تنفيذ الدالة مؤقتًا فقط وتعيد القيمة مقابلها في كل مرة.
التوابع السحرية
تُعرف أيضًا باسم توابع Dunder (أو الشرطة السفلية المزدوجة)، وتعد التوابع السحرية أنواعًا خاصة من الدوال التي يتم استدعاؤها داخليًا. تبدأ وتنتهي بشرطات سفلية مزدوجة. تتضمن بعض الأمثلة __add__(), __abs__(), __round__(), __floor__(), __str__(), __trunc__(), __lshift__()
وما إلى ذلك. التعبير number + 5
هو نفسه number.__add__(5)
ويتم استدعاؤه داخليًا بواسطة توابع أو إجراءات أخرى. يمكنك استخدام هذه الدوال مباشرةً لأنها ستقلل من وقت تشغيل الكود نظرًا لحقيقة أنه الآن بسبب الاستخدام المباشر، سنقوم بتقليل استدعاء دالة في كل مرة.
الخيط
Thread هو أصغر وحدة أو عملية يمكن جدولتها بواسطة نظام التشغيل. يحتوي بايثون على فئة Thread التي تساعد في البرمجة متعددة الخيوط. تُستخدم تعدد الخيوط بشكل أساسي لتسريع الحساب إلى حد كبير حيث ستقوم أكثر من خيط واحد الآن بأداء المهام. لتنفيذ تعدد الخيوط في بايثون، ستحتاج إلى استخدام وحدة threading (نظرًا لأن وحدة thread أصبحت قديمة).
التعبيرات العادية
التعبيرات العادية في بايثون أو RegEx هي تعبيرات تحتوي على أحرف معينة كأنماط يجب مطابقتها. تُستخدم للتحقق مما إذا كانت السلسلة أو مجموعة السلاسل تحتوي على نمط معين. إنها قوية للغاية وأنيقة وموجزة إلى جانب كونها سريعة. لاستخدام التعبيرات العادية في بايثون، تحتاج إلى استيراد وحدة re التي تحتوي على دوال تساعد في مطابقة الأنماط مثل findall()
وsearch()
وsplit()
وما إلى ذلك.
كانت هذه أهم المفاهيم المتقدمة في بايثون والتي يجب أن تعرفها لكي تصبح مطور بايثون متمرسًا. لن تجعلك هذه المفاهيم مبرمجًا ومطورًا جيدًا فحسب، بل ستعمل أيضًا على تحسين قابلية قراءة التعليمات البرمجية وجعلها أسرع.
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.