ما هي وظائف Lambda وكيفية استخدامها؟

تعلم وظائف Python lambda جنبًا إلى جنب مع الاختلاف بين الوظائف العادية ووظائف lambda وكيف يمكن استخدامها في filter () ، و map () ، وخفض ().

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



فلنبدأ :)



لماذا تستخدم وظائف Python Lambda؟


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

لإثبات ذلك ، دعنا ننتقل إلى أبعد من ذلك ونتعرف على وظائف Python Lambda.



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


دوال Python Lambda هي وظائف ليس لها أي اسم. تُعرف أيضًا باسم وظائف مجهولة أو غير معروفة. كلمة 'lambda' ليست اسمًا ، ولكنها كلمة رئيسية. تحدد هذه الكلمة الأساسية أن الوظيفة التالية مجهولة.

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

كيف تكتب وظائف Lambda في بايثون؟

يتم إنشاء دالة Lambda باستخدام عامل تشغيل lambda ويكون تركيبها كما يلي:



بناء الجملة:

حجج لامدا: التعبير

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

مثال:

lambda: 'حدد الغرض'

هنا ، لا تأخذ وظيفة لامدا أي حجج.

مثال:

لامدا أواحد: 'حدد استخدام أواحد'

هنا ، تأخذ لامدا مدخلاً واحدًا وهو ملفواحد.

هياكل البيانات الأساسية في جافا

وبالمثل ، يمكنك الحصول على lambda aواحد، إلى2، إلى3..إلىن.

لنأخذ بعض الأمثلة لتوضيح ذلك:

مثال 1:

أ = لامدا س: س * س طباعة (أ (3))

انتاج: 9

المثال 2:

أ = لامدا س ، ص: س * ص طباعة (أ (3،7))

انتاج: واحد وعشرين

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

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

كيف تعمل الوظائف المجهولة على تقليل حجم الشفرة؟

قبل مقارنة كمية الشفرة المطلوبة ، دعنا نكتب أولاً صيغة وقارنها بوظائف لامدا الموصوفة سابقًا.

يتم تعريف أي وظيفة عادية في Python باستخدام ملف def الكلمة الأساسية على النحو التالي:

بناء الجملة:

def function_name (المعلمات):
صياغات)

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

دعونا نعيد كتابة المثال الذي أخذناه سابقًا باستخدام الدوال العادية الآن.

مثال:

def my_func (x): إرجاع x * x print (my_func (3))

انتاج: 9

كما ترى ، في المثال أعلاه ، نحتاج إلى إفادة return داخل my_func لتقييم قيمة المربع 3. على العكس من ذلك ، لا تستخدم دالة lambda بيان الإرجاع هذا ، ولكن جسم الدالة المجهولة مكتوب في نفس السطر مثل الوظيفة نفسها ، بعد رمز النقطتين. لذلك فإن حجم الوظيفة أصغر من حجم my_func.

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

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

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

وظائف Python Lambda ضمن وظائف محددة من قبل المستخدم:

كما هو مذكور أعلاه ، تُستخدم وظائف لامدا ضمن وظائف أخرى لتمييز أفضل ميزة.

يتكون المثال التالي من new_func وهي دالة بيثون عادية تأخذ وسيطة واحدة x. تضاف هذه الوسيطة بعد ذلك إلى بعض الوسيطة غير المعروفة y والتي يتم توفيرها من خلال دالة lambda.

مثال:

def new_func (x): إرجاع (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

انتاج:

6
5
كما ترى ، في المثال أعلاه ، يتم استدعاء وظيفة lambda الموجودة داخل new_func كلما استخدمنا new_func (). في كل مرة ، يمكننا تمرير قيم منفصلة إلى الوسائط.

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

كيفية استخدام الدوال المجهولة داخل عامل التصفية () والخريطة () وتقليل ():

وظائف مجهولة في الداخل منقي():

منقي():

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

صيغة هذه الوظيفة هي:

بناء الجملة:

مرشح (وظيفة ، متكرر)

def __init __ (ذاتي)

الآن فكر في المثال التالي:

مثال:

my_list = [2،3،4،5،6،7،8] new_list = list (filter (lambda a: (a / 3 == 2)، my_list)) print (new_list)

انتاج: [6]

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

خريطة():

وظيفة map () في Python هي وظيفة تطبق وظيفة معينة على جميع العناصر التكرارية وتعيد قائمة جديدة.

بناء الجملة:

خريطة (وظيفة ، قابلة للتكرار)

لنأخذ مثالاً لتوضيح استخدام وظائف lambda داخل دالة map ():

مثال:

my_list = [2،3،4،5،6،7،8] new_list = list (map (lambda a: (a / 3! = 2)، li)) print (new_list)

انتاج:

[صحيح ، صحيح ، صحيح ، صحيح ، خطأ ، صحيح ، صحيح]

يوضح الناتج أعلاه أنه عندما لا تكون قيمة العناصر التكرارية مساوية لـ 2 عند تقسيمها على 3 ، يجب أن تكون النتيجة المعادة صحيحة. ومن ثم ، بالنسبة لجميع العناصر الموجودة في my_list ، فإنها ترجع true باستثناء القيمة 6 عندما يتغير الشرط إلى False.

خفض():

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

جافا ما هو الماسح الضوئي

تكون صيغة هذه الوظيفة كما يلي:

بناء الجملة:

تقليل (الوظيفة ، التسلسل)

مثال:

من functools import reduction (lambda a، b: a + b، [23،21،45،98])

المثال أعلاه موضح بالصورة التالية:

تقليل الثعبان lambda-edureka

انتاج: 187

يظهر الناتج بوضوح أن جميع عناصر القائمة يضاف باستمرار لإرجاع النتيجة النهائية.

بهذا نصل إلى نهاية هذا المقال حول 'Python Lambda'. آمل أن تكون واضحًا مع كل ما تمت مشاركته معك. تأكد من ممارسة أكبر قدر ممكن وإعادة تجربتك.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في مدونة 'Python Lambda' وسنعاود الاتصال بك في أقرب وقت ممكن.

للحصول على معرفة متعمقة حول Python مع تطبيقاتها المختلفة ، يمكنك التسجيل في البث المباشر مع دعم 24/7 والوصول مدى الحياة.