تعابير lambda في بايثون

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

يمكن إنشاء دوال لا تحمل أسماء باستخدام الكلمة المفتاحية lambda، وتأخذ هذه الدوال الصيغة التالية:

lambda arguments: expression

تسلك هذه الصيغة المختصرة سلوك دالة معرفة بالطريقة التالية:

def <lambda>(arguments):
    return expression

على سبيل المثال، تعيد الدالة التالية مجموع الوسيطين الخاصين بها:

lambda a, b: a+b

يمكن استخدام دوال lambda عند الحاجة إلى كائنات الدالة (function objects)، وتأخذ هذه الدوال تعبيرًا واحدًا فقط، وهي تعدّ صيغةً مختصرةً للطريقة الاعتيادية في تعريف الدوال. كما هو الحال مع تعريفات الدوال المتداخلة، يمكن لدوال lambda الإشارة إلى متغيرات من النطاق الحاوي لها، تعيد الدالة الاعتيادية دالة lambda:

>>> def make_incrementor(n):
...     return lambda x: x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43

يمكن أيضًا تمرير دالة صغيرة كمعامل:

>>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
>>> pairs.sort(key=lambda pair: pair[1])
>>> pairs
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

مصادر