الإعلانات

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

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

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

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

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

إذا كنت قد استخدمت Python من قبل ، فمن المحتمل أنك حددت وظائفك باستخدام

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

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

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

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

كيفية استخدام Lambdas في بايثون

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

def add_five (number): رقم المرسل + 5 print (add_five (number = 4))
كيفية استخدام وظائف لامبا في بيثون

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

إليك كيف تبدو وظيفة lambda:

add_five = رقم لامدا: رقم + 5 طباعة (add_five (رقم = 4))
كيفية استخدام وظائف لامبا في بيثون

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

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

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

add_numbers_and_five = رقم lambda1 ، number2: number1 + number2 + 5 print (add_numbers_and_five (number1 = 4 ، number2 = 3))
كيفية استخدام وظائف لامبا في بيثون

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

بيثون Lambdas مع خريطة ، تصفية ، والحد

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

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

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

list1 = [2 ، 4 ، 6 ، 8] print (list1) def add_five (number): رقم الإرجاع + 5 new_list = list (map (add_five، list1)) print (new_list)
كيفية استخدام وظائف لامبا في بيثون

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

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

list1 = [2 ، 4 ، 6 ، 8] print (list1) new_list = list (map (lambda x: x + 5، list1)) print (new_list)
كيفية استخدام وظائف لامبا في بيثون

كما ترون ، كله add_five وظيفة لم تعد مطلوبة. بدلاً من ذلك ، يتم استخدام وظيفة lambda للحفاظ على الأشياء نظيفة.

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

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

الأرقام = [1 ، 4 ، 5 ، 10 ، 20 ، 30] طباعة (أرقام) def Larger_than_ten_func (الرقم): إذا كان الرقم> 10: return صحيحًا آخر: إرجاع False new_numbers = قائمة (عامل تصفية (Greater_than_ten_func ، أرقام)) print (new_numbers)
كيفية استخدام وظائف لامبا في بيثون

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

الأرقام = [1 ، 4 ، 5 ، 10 ، 20 ، 30] طباعة (أرقام) new_numbers = قائمة (عامل تصفية (lambda x: x> 10 ، أرقام)) طباعة (new_numbers)
كيفية استخدام وظائف لامبا في بيثون

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

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

من functools استيراد تقليل الأرقام = [10 ، 20 ، 30 ، 40] طباعة (أرقام) def summer (a، b): إرجاع a + b نتيجة = تقليل (الصيف ، أرقام) طباعة (نتيجة)
كيفية استخدام وظائف لامبا في بيثون

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

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

من functools استيراد تقليل الأرقام = [10 ، 20 ، 30 ، 40] نتيجة الطباعة (الأرقام) = التقليل (lambda a ، b: a + b ، الأرقام) طباعة (نتيجة)
كيفية استخدام وظائف لامبا في بيثون

أشياء يجب الانتباه إليها مع بيثون لامبدا

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

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

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

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