وظائف بايثون لامدا مع أمثلة

نشرت: 2022-06-04

جدول المحتويات

بايثون - مقدمة

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

تم تصميم Python في الثمانينيات كخليفة للغة برمجة ABC بواسطة Guido Van Rossum. منذ ذلك الحين ، ظلت Python لغة برمجة شائعة نظرًا لتعدد استخداماتها.

الوظائف - مقدمة

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

  • وظيفة محددة من قبل المستخدم (USF) - وظائف قابلة للتخصيص يمكن تغييرها وفقًا لمتطلبات المبرمج.
  • الوظائف المدمجة (BIF) - الوظائف التي لا يمكن تخصيصها ويجب استخدامها بالطريقة التي تتوفر بها.

تعلم دورات علوم البيانات عبر الإنترنت في upGrad

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

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

دالة Lambda هي وظيفة صغيرة يمكن أن تأخذ عدة وسيطات ولكن تعبيرًا واحدًا فقط. لديهم أيضًا بناء جملة أكثر تقييدًا ولكن موجزًا ​​من وظائف Python العادية. تمت إضافة وظيفة lambda إلى لغة Python في عام 1994 جنبًا إلى جنب مع وظائف map () و filter () و تقليل ().

تحقق من برامجنا في الولايات المتحدة - علوم البيانات

برنامج الشهادة المهنية في علوم البيانات وتحليلات الأعمال ماجستير العلوم في علوم البيانات ماجستير العلوم في علوم البيانات برنامج الشهادة المتقدمة في علوم البيانات
برنامج PG التنفيذي في علوم البيانات المعسكر التدريبي لبرمجة بايثون برنامج الشهادة المهنية في علوم البيانات لاتخاذ قرارات الأعمال برنامج متقدم في علوم البيانات

لتحديد وظيفة مجهولة الهوية ، يتعين على المرء استخدام الكلمة الأساسية lambda مثل def يستخدم للوظائف العادية. هناك ثلاثة أجزاء لوظيفة مجهولة محددة في بايثون:

  • الكلمة الرئيسية lambda
  • معلمات أو متغير منضم
  • الجسم الوظيفي

بناء الجملة

تكون صيغة دالة لامدا كما يلي:

Lambda p1، p2: التعبير

p1 و p2 هي المعلمات هنا. لا توجد قيود على إضافة معلمات في وظيفة لامدا. يمكنك إضافة الكثير أو القليل كما تريد. لكن وظيفة lambda مقصورة من الناحية التركيبية على تعبير واحد.

أمثلة لوظيفة لامدا في بايثون:

مثال 1

x = "وظيفة Lambda"

يحصل # لامدا على تصريح للطباعة

(lambda x: print (x)) (x)

انتاج |

وظيفة لامدا

مثال 2

س = لامدا أ: أ + 10

طباعة (x (5))

انتاج |

15

يقرأ المتعلمون أيضًا: تعلم Python عبر الإنترنت مجانًا

الاختلافات بين الوظيفة العادية ووظيفة لامدا

تمتلك وظيفة لامدا بعض الاختلافات النحوية عن الوظائف العادية.

  • يتم استخدام التعبيرات فقط وليس العبارات في النص. إذا تم استخدام أي عبارات مثل التمرير أو التأكيد أو الإرجاع أو الارتفاع ، فسيظهر الناتج خطأ SyntaxError.

مثال

>>> (لامدا س: تأكيد س == 2) (2)

ملف "<input>" ، السطر الأول

(لامدا س: تأكيد س == 2) (2)

^

خطأ قواعدي: بناء جملة غير صالح

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

مثال :

>>> (لامدا س:

... (x٪ 2 و "فردي" أو "زوجي")) (3)

'الفردية'

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

  • لا تدعم وظيفة lambda التعليقات التوضيحية من النوع. ستؤدي إضافة التعليقات التوضيحية إلى بنية lambda إلى حدوث خطأ نحوي.
  • IIFE أو التعبير عن الوظيفة الذي تم استدعاؤه فورًا هو دالة يتم تنفيذها بمجرد تعريفها. يُعرف أيضًا باسم وظيفة مجهولة التنفيذ الذاتي. IIFE هو نتيجة مباشرة لوظيفة lambda ، حيث يمكن استدعاء دالة lambda كما تم تعريفها.

الآن ، دعنا نرى الاختلافات الرئيسية بين الوظائف العادية ووظائف لامدا هي:

(مصدر)

وظائف لامدا - إيجابيات وسلبيات

الايجابيات

  • يجعل الكود أكثر قابلية للقراءة.
  • مثالي للوظائف التي يتم استخدامها مرة واحدة.
  • سهل الفهم ويمكن استخدامه لتفسيرات منطقية بسيطة.

سلبيات:

  • لا يمكن تنفيذ عدة تعبيرات مستقلة.
  • استخدام دالة lambda ليس مثاليًا إذا امتد الرمز لأكثر من سطر في وظيفة عادية (def).
  • لا يمكن شرح جميع المدخلات والمخرجات والعمليات في سلسلة docstring مثل الوظيفة العادية.

أين تستخدم Lambdas؟

على الرغم من وجود اختلافات رئيسية بين وظائف def العادية ووظائف lambda ، إلا أنه يتم التعامل معها داخليًا داخليًا.

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

أين تمتنع عن استخدام وظائف لامدا؟

  • كتابة وظائف لامدا المعقدة ليست ممارسة جيدة حيث سيكون من الصعب فك تشفيرها.
  • الامتناع عن استخدام وظائف lambda للعمليات المتكررة.
  • إذا كانت الكود لا تتبع دليل أسلوب Python (PEP8).

يتم اختبار وظائف Lambda تمامًا مثل الوظائف العادية. يمكن استخدام كل من unittest والمذهبية لهذا الغرض.

اقرأ مقالاتنا المشهورة حول علوم البيانات الأمريكية

دورة تحليل البيانات بشهادة دورة مجانية عبر الإنترنت لـ JavaScript مع شهادة أسئلة وأجوبة مقابلة Python الأكثر شيوعًا
أسئلة وأجوبة مقابلة محلل البيانات أعلى الخيارات الوظيفية لعلوم البيانات في الولايات المتحدة الأمريكية [2022] SQL مقابل MySQL - ما هو الفرق
الدليل النهائي لأنواع البيانات راتب مطور Python في الولايات المتحدة راتب محلل البيانات في الولايات المتحدة: متوسط ​​الراتب

وظيفة لامدا مع المرشح ()

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

مثال :

# رمز بايثون للتوضيح

# مرشح () مع لامدا ()

li = [5 ، 7 ، 22 ، 97 ، 54 ، 62 ، 77 ، 23 ، 73 ، 61]

final_list = list (مرشح (lambda x: (x٪ 2! = 0)، li))

طباعة (القائمة_ النهائية)

انتاج:

[5 ، 7 ، 97 ، 77 ، 23 ، 73 ، 61]

(مصدر)

مثال :

# برنامج لتصفية العناصر الزوجية فقط من القائمة

my_list = [1 ، 5 ، 4 ، 6 ، 8 ، 11 ، 3 ، 12]

new_list = list (filter (lambda x: (x٪ 2 == 0)، my_list))

طباعة (قائمة_جديدة)

انتاج |

[4 ، 6 ، 8 ، 12]

وظيفة لامدا مع الخريطة ()

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

مثال : لمضاعفة قيمة كل عنصر في القائمة ، يكون الرمز كما يلي:

my_list = [1 ، 5 ، 4 ، 6 ، 8 ، 11 ، 3 ، 12]

new_list = list (map (lambda x: x * 2، my_list))

طباعة (قائمة_جديدة)

انتاج:

[2 ، 10 ، 8 ، 12 ، 16 ، 22 ، 6 ، 24]

مثال : لتجميع كل رقم في القائمة ، يكون الرمز كما يلي

list_1 = [1،2،3،4،5،6،7،8،9]

مكعب = خريطة (lambda x: pow (x، 3)، list_1)

قائمة (مكعبة)

انتاج:

[1 ، 8 ، 27 ، 64 ، 125 ، 216 ، 343 ، 512 ، 729]

وظيفة Lambda مع وظيفة تقليل ()

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

مثال 1

ملاحظة: هذا المثال مأخوذ من مكتبة functools.

للحصول على مجموع القائمة ، سيكون الرمز ،

# رمز بايثون للتوضيح

# تقليل () مع لامدا ()

# للحصول على مجموع القائمة

من استيراد functools تقليل

li = [5 ، 8 ، 10 ، 20 ، 50 ، 100]

المجموع = تقليل ((لامدا س ، ص: س + ص) ، لي)

طباعة (مجموع)

انتاج:

193

استنتاج

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

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

إذا كنت تتطلع إلى تعلم لغة Python كاملة وتحسين حياتك المهنية في علوم البيانات وتحليلات الأعمال ، فإن برنامج upGrad للشهادة المهنية عبر الإنترنت في علوم البيانات وتحليلات الأعمال من Top US University - University of Maryland هو أفضل رهان لك.

يوفر البرنامج فرصة للدراسة في واحدة من أفضل 100 جامعة عالمية والحصول على شهادة من Maryland Smith لزيادة فرصك في النجاح في هذا المجال. إنها دورة مدتها 9 أشهر مع إمكانية الوصول إلى أكثر من 300 شريك توظيف ، وفرص مقابلة مؤكدة للطلاب الجدد ، وستة مكالمات إرشادية.

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

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

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

دوال Lambda مثل دوال def العادية تدعم الطرق المختلفة لتمرير الحجج. وتشمل هذه: الكلمات الرئيسية فقط وسيطات الكلمات الرئيسية / وسيطات NAmed Varargs / قائمة المتغيرات من الوسائط قائمة المتغيرات لوسائط الكلمات الرئيسية.

ما هي عمليات الإغلاق في دوال Python Lambda؟

عمليات الإغلاق أو الإغلاق المعجمي هي وظائف يكون فيها كل متغير حر باستثناء المعلمات مرتبطًا بقيمة معينة في النطاق المتضمن للوظيفة. يمكن استدعاء عمليات الإغلاق من أي مكان. وظائف Lambda مثل وظائف def العادية يمكن أن تكون مغلقة.