اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.

عامًة lambda عبارة عن طريقة لإنشاء دالة صغيرة ومؤقتة وبدون اسم، أي فكر فيها كأنها اختصار أو لقب سريع لدالة بسيطة لا تحتاج إلى تعريفها بشكل رسمي باستخدام الكلمة def.

فبالشكل التقليدي نقوم بتعريف دالة لها اسم وليكن add، وتستقبل معاملات (x, y)، وتقوم بعملية ثم تعيد النتيجة من خلال return.

def add(x, y):
  return x + y

result = add(5, 3)
print(result)  

ولكن نستطيع إنشاء نفس الوظيفة في سطر واحد وبدون اسم من خلال lambda:

add_lambda = lambda x, y: x + y

result = add_lambda(5, 3)
print(result)  

لاحظ في البداية كتبت كلمة lambda لتعريفها ثم كتبت أسماء المعاملات التي أريد تمريرها وهما x, y وبعد ذلك كتبت المنطق بعد رمز : أي المنطق الذي نريد تنفيذه وهو جمع القيم الخاصة بالمعاملات.

وقمت بتعيينها لمتغير للتوضيح فقط، لكن نستطيع كتابة ذلك مباشرًة وستكون دالة مؤقتة:

print((lambda x, y: x + y)(5, 3))  

وأٌقصد بمؤقتة أننا لا نستطيع إعادة استدعائها من خلال متغير كما فعلت.

ونادرًا ما يتم تعيين دالة lambda لمتغير، فالفرض من lambda هو استخدامها كوسيط لدوال أخرى أكبر، خاصة تلك التي تتوقع دالة كمدخل لها.

كالتالي:

students = [
    {'name': 'أحمد', 'grade': 88},
    {'name': 'سارة', 'grade': 95},
    {'name': 'خالد', 'grade': 72}
]

sorted_students = sorted(students, key=lambda student: student['grade'])

print(sorted_students)

وبدون lambda، كنا سنحتاج إلى تعريف دالة كاملة من خلال def

ومثال آخر:

numbers = [1, 2, 3, 4, 5]

squared_numbers = list(map(lambda x: x * x, numbers))

print(squared_numbers) 

بينما للدوال المعقدة نستخدم def بالطبع

  • 0
نشر

بشكل مبسط lambda هي طريقة مختصرة لكتابة دالة صغيرة في سطر واحد. فكر فيها كطريقة سريعة لإنشاء دالة بسيطة بدون الحاجة لكتابة def والاسم وكل التفاصيل المعتادة.

lambda مفيدة جداً عندما تحتاج دالة صغيرة وبسيطة لاستخدامها مع دوال أخرى مثل map() و filter() و sorted(). هذه الدوال تحتاج دالة أخرى كمعامل، و lambda تجعل الكود أكثر إيجازاً ووضوحاً.

مثلاً، بدلاً من كتابة دالة منفصلة لحساب مربع الرقم ثم استخدامها مع map()، يمكنك استخدام lambda مباشرة داخل map().

ولكن lambda محدودة في قوتها - يمكنها فقط احتواء تعبير واحد (expression) وليس عبارات متعددة (statements). فلا يمكنك مثلاً وضع if مع else متعددة الأسطر، أو حلقات for معقدة. إذا احتجت شيئاً معقداً، الأفضل استخدام def التقليدية.

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...