دوال Lambda في بايثون: ما هي وكيف تستخدمها؟

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هي دوال Lambda في بايثون

دوال Lambda هي طريقة مدمجة ومختصرة لتعريف الدوال مباشرة داخل التعبيرات البرمجية. في لغة البرمجة بايثون، تُعرف أيضًا باسم الدوال المجهولة (Anonymous Functions). سُميت بهذا الاسم لأنها تُنشأ بدون اسم، وتُستخدم غالبًا محليًا في مكان الكود حيث لا داعي لإنشاء دالة كاملة باستخدام الكلمة المفتاحية def.

تتميز دوال Lambda بالبساطة وسهولة الاستخدام. غالبًا ما تُستخدم مع الدوال عالية المستوى مثل map() و filter() و sorted(). كما تُستخدم دوال Lambda على نطاق واسع في المكتبات الشهيرة مثل pandas و NumPy و Flask و Tkinter والعديد من أدوات نظام بايثون البيئي.

أساسيات صيغة دوال Lambda

هيكل تعبير Lambda

صيغة دالة Lambda في بايثون تكون كالتالي:

lambda arguments: expression

حيث:

  • arguments — قائمة وسائط الدالة، تمامًا مثل الدالة العادية
  • expression — تعبير واحد، ناتج حسابه سيُعاد كنتيجة للدالة

خصائص عمل دوال Lambda

لدوال Lambda في بايثون عدة خصائص مهمة:

  • تعيد دائمًا ناتج التعبير تلقائيًا
  • لا تحتوي على الكلمة المفتاحية return
  • ناتج حساب التعبير هو القيمة المُعادة
  • تدعم تعبيرًا واحدًا فقط في جسم الدالة

أمثلة عملية لتعبيرات Lambda

عمليات حسابية بسيطة

# حساب مربع العدد
square = lambda x: x ** 2
print(square(5))  # 25

# جمع عددين
add = lambda a, b: a + b
print(add(3, 7))  # 10

# التحقق من زوجية العدد
is_even = lambda x: x % 2 == 0
print(is_even(4))  # True

Lambda مع تعبيرات شرطية

# تحديد القيمة القصوى
max_value = lambda x, y: x if x > y else y
print(max_value(10, 15))  # 15

# تصنيف الأعداد
categorize = lambda x: "موجب" if x > 0 else "سالب" if x < 0 else "صفر"

مقارنة بين Lambda والدوال العادية

الاختلافات الرئيسية

الخاصية الدالة العادية (def) دالة Lambda
الصيغة def func(x): return x * 2 lambda x: x * 2
عدد التعبيرات متعددة تعبير واحد فقط
التسمية لها اسم عادة مجهولة
مجال الاستخدام إعادة الاستخدام عمليات لمرة واحدة
التوثيق تدعم docstring لا تدعم
تعليقات الأنواع تدعم دعم محدود

متى تختار Lambda

تكون دوال Lambda أكثر فعالية في الحالات التالية:

  • العمليات البسيطة المكونة من سطر واحد
  • الاستخدام كوسائط لدوال أخرى
  • الحسابات المؤقتة دون الحاجة لاستدعاء متكرر
  • العمل مع الدوال عالية المستوى

استخدام Lambda مع الدوال عالية المستوى

دالة map()

تطبق دالة map() دالة معينة على كل عنصر من عناصر الكائن القابل للتكرار:

numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers))
print(squares)  # [1, 4, 9, 16, 25]

# تحويل النصوص إلى أحرف كبيرة
words = ["hello", "world", "python"]
uppercase = list(map(lambda s: s.upper(), words))
print(uppercase)  # ['HELLO', 'WORLD', 'PYTHON']

دالة filter()

تنشئ filter() مكررًا من العناصر التي تحقق الشرط المحدد:

# تصفية الأعداد الزوجية
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # [2, 4, 6, 8]

# تصفية النصوص الأطول من 3 أحرف
words = ["hi", "hello", "ok", "python", "code"]
long_words = list(filter(lambda w: len(w) > 3, words))
print(long_words)  # ['hello', 'python', 'code']

تطبيقات متقدمة لـ Lambda

استخدام Lambda مع pandas

في مكتبة pandas، تُستخدم دوال Lambda بشكل شائع لمعالجة البيانات:

import pandas as pd

# إنشاء إطار بيانات
df = pd.DataFrame({
    'name': ['Ahmed', 'Sara', 'Khaled'],
    'age': [25, 30, 35],
    'salary': [5000, 6000, 7000]
})

# تطبيق زيادة على الراتب
df['salary_after_raise'] = df['salary'].apply(lambda x: x * 1.1)
print(df)

إنشاء closures باستخدام Lambda

يمكن استخدام دوال Lambda لإنشاء closures (دوال مغلقة) بسيطة:

# دالة مضاعف
def multiplier(n):
    return lambda x: x * n

double = multiplier(2)
triple = multiplier(3)

print(double(5))  # 10
print(triple(5))  # 15

أفضل الممارسات والنصائح

متى تستخدم ومتى تتجنب Lambda

استخدم دوال Lambda عندما:

  • تكون العملية بسيطة وتُكتب في سطر واحد
  • تحتاج دالة مؤقتة لاستخدامها مرة واحدة
  • تعمل مع دوال مثل map() و filter() و sorted()

تجنب دوال Lambda عندما:

  • يكون المنطق معقدًا ويتطلب عدة أسطر
  • تحتاج إلى إعادة استخدام الدالة في عدة أماكن
  • يحتاج الكود إلى توثيق واضح (docstring)

الخلاصة

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

المدونات

توصيات الكتب