دليل المبتدئين لفهم وظائف بايثون لامدا

دليل المبتدئين لفهم وظائف بايثون لامدا

تعد Lambdas في Python واحدة من أكثر الميزات المفيدة والمهمة والمثيرة للاهتمام التي يجب معرفتها. لسوء الحظ ، من السهل أيضًا إساءة فهمها والخطأ.





في هذه المقالة ، سنشرح كل ما تحتاج لمعرفته حول هذه الوظائف الغامضة ، وكيفية استخدامها ، ولماذا هي مفيدة.





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





ما هي لغة لامدا في بايثون؟

لامدا هي ببساطة طريقة لتعريف دالة في بايثون. تُعرف أحيانًا باسم 'مشغلي لامدا' أو 'وظائف لامدا'.

إذا كنت قد استخدمت Python من قبل ، فمن المحتمل أنك حددت وظائفك باستخدام ملف def الكلمة الرئيسية ، وقد عملت بشكل جيد بالنسبة لك حتى الآن. فلماذا توجد طريقة أخرى لفعل الشيء نفسه؟



الفرق هو أن وظائف لامدا مجهولة. بمعنى ، إنها وظائف لا تحتاج إلى تسميتها. يتم استخدامها لإنشاء وظائف صغيرة لمرة واحدة في الحالات التي تكون فيها الوظيفة 'الحقيقية' كبيرة جدًا وضخمة.

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





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

كيفية استخدام Lambdas في Python

قبل النظر إلى دالة لامدا ، دعونا نلقي نظرة على وظيفة أساسية فائقة تحدد الطريقة 'التقليدية':





def add_five(number):
return number + 5

print(add_five(number=4))

هذه الوظيفة أساسية للغاية ، ولكنها توضح كيفية استخدام اللامدا. قد تكون لك أكثر تعقيدًا من هذا. تضيف هذه الوظيفة خمسة إلى أي رقم يتم تمريره إليها من خلال ملف عدد معامل.

وإليك كيف تبدو كدالة لامدا:

add_five = lambda number: number + 5

print(add_five(number=4))

بدلا من استخدام def ، الكلمة لامدا يستخدم. ليست هناك حاجة إلى أقواس ، ولكن أي كلمات تلي لامدا يتم إنشاء الكلمات الرئيسية كمعلمات. يتم استخدام النقطتين لفصل المعلمات والتعبير. في هذه الحالة ، يكون التعبير رقم + 5 .

ليست هناك حاجة لاستخدام ملف إرجاع الكلمة الرئيسية --- lambda تفعل ذلك تلقائيًا نيابةً عنك.

إليك كيفية إنشاء دالة lambda مع وسيطتين:

كيف أسجل مكالمة هاتفية على iPhone
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

إذا كنت لا تزال غير متأكد من وجهة نظر لامدا ، فسوف يتعمق القسم التالي ويساعدك على رؤية الضوء.

Python Lambdas مع الخريطة والتصفية والتقليل

تحتوي مكتبة Python الأساسية على ثلاث طرق تسمى خريطة و خفض ، و منقي . ربما تكون هذه الطرق هي أفضل الأسباب لاستخدام وظائف لامدا.

ال خريطة تتوقع الدالة وسيطين: دالة وقائمة. يأخذ هذه الوظيفة ويطبقها على كل عنصر في القائمة ، ويعيد قائمة العناصر المعدلة ككائن خريطة. ال قائمة يتم استخدام الوظيفة لتحويل كائن الخريطة الناتج مرة أخرى إلى قائمة مرة أخرى.

إليك كيفية استخدام الخريطة بدون لامدا:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

وظيفة الخريطة هذه سهلة الاستخدام ، لكنها قد تكون أفضل. ال add_five يتم تمرير الدالة كوسيطة ، ولكن ماذا لو كنت لا تريد إنشاء دالة في كل مرة تستخدم فيها الخريطة؟ يمكنك استخدام لامدا بدلا من ذلك!

هذا ما يبدو عليه نفس الرمز ، فقط مع استبدال الوظيفة بـ lambda:

كيفية إعادة تعيين نظام التشغيل Windows 10
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

كما ترون ، الكل add_five الوظيفة لم تعد مطلوبة. بدلاً من ذلك ، تُستخدم وظيفة لامدا لإبقاء الأشياء نظيفة.

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

أولاً ، بدون لامدا:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

لا حرج في هذا الرمز ، لكنه يستغرق وقتًا طويلاً بعض الشيء. دعونا نرى عدد السطور التي يمكن أن تزيلها لامدا:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

حلت وظيفة لامدا محل الحاجة إلى الكل أكبر ! وقد تم ذلك في خمس كلمات بسيطة. هذا هو السبب في أن لامدا قوية: فهي تقلل الفوضى في المهام البسيطة.

أخيرًا ، دعنا نلقي نظرة على خفض . Reduce هو وظيفة أخرى رائعة في Python. يتم تطبيق عملية حسابية متدرجة على جميع العناصر في القائمة. يمكنك استخدام هذا لحساب إجمالي أو ضرب كل الأرقام معًا:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

هذا المثال يحتاج إلى الاستيراد خفض من functools الوحدة النمطية ، ولكن لا تقلق ، فإن وحدة functools هي جزء من مكتبة Python الأساسية.

القصة هي نفسها إلى حد كبير مع لامدا ، ليست هناك حاجة لوظيفة:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

أشياء يجب الانتباه إليها مع Python Lambdas

أظهرت هذه الأمثلة مدى سهولة وظائف lambda ، جنبًا إلى جنب مع الخريطة والتصفية والتقليل من مكتبة Python الأساسية. ومع ذلك ، هناك بعض الاستخدامات التي لا تساعد فيها وظائف لامدا.

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

لمزيد من النصائح ، تحقق من موقعنا دليل البرمجة الشيئية في بايثون وتحقق من دليل الأسئلة الشائعة للمبتدئين في Python.

يشارك يشارك سقسقة بريد الالكتروني 3 طرق للتحقق مما إذا كان البريد الإلكتروني حقيقيًا أم مزيفًا

إذا تلقيت بريدًا إلكترونيًا يبدو مشكوكًا فيه بعض الشيء ، فمن الأفضل دائمًا التحقق من صحته. فيما يلي ثلاث طرق لمعرفة ما إذا كان البريد الإلكتروني حقيقيًا.

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • بايثون
  • دروس الترميز
نبذة عن الكاتب جو كوبورن(تم نشر 136 مقالاً)

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

المزيد من Joe Coburn

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك