دوره‌ها / آموزش پایتون (Python) / توابع لامبدا (Python Lambda)

توابع لامبدا (Python Lambda)

15 دقیقه Article

توابع لامبدا: قدرت در کوتاهی (Lambda Functions) ⚡🤏

تابع لامبدا یک تابع کوچک و بدون نام (Anonymous) است. برخلاف توابع معمولی که با def تعریف می‌شوند، لامبداها فورا و در یک خط نوشته می‌شوند.

۱. سینتکس و ساختار

ساختار کلی به این صورت است: lambda arguments : expression

  • لامبدا می‌تواند هر تعداد آرگومان داشته باشد، اما فقط یک عبارت (Expression) دارد.
  • نتیجه این عبارت به طور خودکار بازگردانده می‌شود (نیازی به نوشتن return نیست).
x = lambda a, b : a * b
print(x(5, 6)) # 30

۲. چرا از لامبدا استفاده می‌کنیم؟ 🤔

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

فرض کنید تابعی دارید که یک عدد می‌گیرد و آن را در عددی که بعداً مشخص می‌شود ضرب می‌کند:

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

mydoubler = myfunc(2)
print(mydoubler(11)) # 22

۳. کاربرد در فیلتر و مپ (Map & Filter) 🧹

بیشترین کاربرد لامبدا در پایتون، همراه با توابعی مثل filter() و map() برای کار روی لیست‌ها است:

  • Filter: برای جدا کردن آیتم‌هایی که شرایط خاصی دارند (مثلاً فقط اعداد زوج).
  • Map: برای انجام یک عملیات روی تمام اعضای یک لیست (مثلاً دو برابر کردن همه اعداد).
تفاوت با توابع معمولی: از لامبدا زمانی استفاده کنید که به یک تابع موقت و بسیار ساده برای یک بازه زمانی کوتاه نیاز دارید. برای کدهای پیچیده و چندخطی، همیشه از def استفاده کنید تا کدتان قابل خواندن باقی بماند.
نکته حرفه‌ای: لامبداها را معمولاً در جای استفاده‌شان تعریف می‌کنند و نیازی به اختصاص دادن آن‌ها به یک متغیر نیست (هرچند که امکان‌پذیر است).

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

لامبدای جمع‌کننده Medium
سوال تمرین

یک تابع لامبدا بنویسید که دو پارامتر a و b را بگیرد و حاصل‌جمع آن‌ها را برگرداند. نتیجه را برای اعداد 5 و 10 چاپ کنید.

پاسخ تمرین
PYTHON
x = lambda a, b : a + b
print(x(5, 10))

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.