بايثون هي لغة برمجة متعددة الاستخدامات وقوية، وتتضمن العديد من الخصائص التي تجعلها مرنة وقابلة للتكيف مع مختلف أنماط البرمجة. من بين هذه الخصائص توجد دوال Lambda، وهي موضوع حديثنا هنا.
ما هي دوال Lambda في بايثون؟
دوال Lambda في بايثون هي دوال مجهولة (Anonymous Functions)، بمعنى أنها دوال لا تحمل اسمًا محددًا مثل الدوال التي نُعرّفها باستخدام الكلمة المفتاحية def
. تُستخدم دوال Lambda لإنشاء دوال صغيرة وبسيطة في سطر واحد، وغالبًا ما تُستخدم عندما نحتاج إلى دالة لوقت قصير أو كجزء من دالة أخرى.
الصيغة العامة لدوال Lambda:
lambda arguments: expression
lambda
: هي الكلمة المفتاحية التي تُستخدم لتعريف دالة Lambda.arguments
: هي معاملات الدالة (المدخلات)، ويمكن أن تكون صفرًا أو أكثر.expression
: هي تعبير واحد يُقيّم ويُرجع كنتيجة للدالة. يجب أن يكون تعبيرًا واحدًا فقط، ولا يمكن أن يحتوي على أوامر متعددة أو هياكل تحكم مثلif
أوfor
.
أمثلة على استخدام دوال Lambda:
- دالة لجمع عددين:
sum = lambda x, y: x + yprint(sum(5, 3)) # Output: 8
في هذا المثال، أنشأنا دالة Lambda تأخذ معاملين x
و y
وتُرجع مجموعهما. ثم استدعينا الدالة باستخدام sum(5, 3)
وطبعنا الناتج.
- دالة لتربيع عدد:
square = lambda x: x * xprint(square(4)) # Output: 16
هنا، أنشأنا دالة Lambda تأخذ معاملًا واحدًا x
وتُرجع مربعه.
- استخدام Lambda مع دالة
map()
:
تُستخدم دالة map()
لتطبيق دالة معينة على جميع عناصر iterable (مثل قائمة أو tuple) وإرجاع iterator يحتوي على النتائج. يمكن استخدام دوال Lambda مع map()
بشكل فعال:
numbers = [1, 2, 3, 4, 5]squared_numbers = list(map(lambda x: x * x, numbers))print(squared_numbers) # Output: [1, 4, 9, 16, 25]
في هذا المثال، استخدمنا دالة Lambda لتربيع كل عنصر في القائمة numbers
باستخدام دالة map()
، ثم حوّلنا الناتج إلى قائمة.
- استخدام Lambda مع دالة
filter()
:
تُستخدم دالة filter()
لتصفية عناصر iterable بناءً على شرط معين. يمكن استخدام دوال Lambda لتحديد هذا الشرط:
numbers = [1, 2, 3, 4, 5, 6]even_numbers = list(filter(lambda x: x % 2 == 0, numbers))print(even_numbers) # Output: [2, 4, 6]
هنا، استخدمنا دالة Lambda لتحديد ما إذا كان العدد زوجيًا أم لا، واستخدمنا filter()
للحصول على قائمة بالأعداد الزوجية فقط.
متى نستخدم دوال Lambda؟
- عندما نحتاج إلى دالة بسيطة في سطر واحد.
- عند استخدام دوال مثل
map()
وfilter()
وsort()
. - عند الحاجة إلى دالة لوقت قصير دون الحاجة إلى تعريف دالة كاملة باسم.
متى نتجنب استخدام دوال Lambda؟
- عندما تكون الدالة معقدة وتحتاج إلى أكثر من تعبير واحد. في هذه الحالة، من الأفضل تعريف دالة عادية باستخدام
def
. - عندما نحتاج إلى إعادة استخدام الدالة في أماكن متعددة. في هذه الحالة، من الأفضل تعريف دالة باسم لسهولة الاستدعاء.
باختصار، دوال Lambda هي أداة قوية في بايثون لإنشاء دوال صغيرة ومجهولة بشكل سريع وفعال. تُستخدم بشكل شائع مع دوال أخرى مثل map()
و filter()