Python Lambda

تابع لامدا یک تابع کوچک ناشناس است (small anonymous function) .

تابع لامدا می‌تواند هر تعداد آرگومان را داشته باشد ولی تنها یک عبارت جهت اجرا می‌تواند داشته باشد.

نوشتار

lambda arguments : expression

عبارت (expression) اجرا و نتیجه برگردانده می‌شود. در کد زیر عدد 10 به آرگومان a اضافه و نتیجه برگردانده می‌شود.


x = lambda a : a + 10
print(x(5))

خروجی:

همان‌طور که در ابتدا گفته شد، تابع لامدا می‌تواند هر تعداد دلخواه و مورد نیاز از آرگومان‌ها را داشته باشد. در کد زیر آرگومان a در آرگومان b ضرب شده و نتیجه برگردانده می‌شود.


x = lambda a, b : a * b
print(x(5, 6))

خروجی:

چرا از تابع لامدا استفاده کنیم؟

قدرت لامدا زمانی بهتر مشخص می‌شود که به عنوان یک تابع ناشناس داخل یک تابع دیگر استفاده شود.

فرض کنید تابعی دارید که یک آرگومان را قبول می‌کند، و آن آرگومان در یک عدد نامعلوم ضرب می‌شود:

def myfunc(n):
    return lambda a : a * n

الان می‌توانیم از تابع تعریف شده استفاده و تابعی بسازیم که همیشه عدد فرستاده شده به آن را دو برابر می‌کند.


def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)

print(mydoubler(11))

خروجی:

یا از همان تابع تعریف شده استفاده و تابعی بسازیم که عدد فرستاده شده به آن را همیشه 3 برابر می‌کند.


def myfunc(n):
  return lambda a : a * n

mytripler = myfunc(3)

print(mytripler(11))

خروجی:

یا از همان تابع تعریف شده استفاده و در یک برنامه هر دو تابع را بسازیم.


def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)
mytripler = myfunc(3)

print(mydoubler(11))
print(mytripler(11))

خروجی:

از توابع لامدا هنگامی استفاده کنید که یک تابع ناشناس برای مدت زمانی کوتاه مورد نیاز باشد.