توابع لامبدا (Lambda Functions)
توابع لامبدا یا توابع ناشناس در پایتون به شما اجازه میدهند توابع ساده را در یک خط تعریف کنید، بدون استفاده از def. این نوع توابع معمولاً زمانی استفاده میشوند که بخواهید یک تابع کوچک و موقتی را به عنوان آرگومان به تابعی دیگر بدهید.
def my_func(f, arg):
return f(arg)
result = my_func(lambda x: 2 * x * x, 5)
print(result) # خروجی: 50
ساختار توابع لامبدا: تابع لامبدا با کلمه کلیدی lambda شروع میشود، سپس لیستی از پارامترها و بعد از آن با : یک عبارت بازگرداندهشونده نوشته میشود. برخلاف def، توابع لامبدا فقط میتوانند شامل یک عبارت باشند و اجازه استفاده از چندین دستور (statement) مانند حلقهها یا شرطهای پیچیده را ندارند.
مثال مقایسهای با تابع معمولی:
# تابع معمولی
def polynomial(x):
return x**2 + 5*x + 4
print(polynomial(-4))
# تابع لامبدا
print((lambda x: x**2 + 5*x + 4)(-4))
در هر دو مورد بالا، خروجی 0 خواهد بود. در نسخه دوم، تابع لامبدا مستقیم در جای خود تعریف و فراخوانی شده است.
ذخیره در متغیر و استفاده مشابه تابع معمولی:
double = lambda x: x * 2
print(double(7)) # خروجی: 14
کاربرد رایج با توابعی مانند map، filter، و sorted:
nums = [1, 2, 3, 4, 5]
# استفاده از map برای دو برابر کردن اعداد
doubled = list(map(lambda x: x * 2, nums))
print(doubled) # خروجی: [2, 4, 6, 8, 10]
# استفاده از filter برای فیلتر کردن اعداد زوج
even = list(filter(lambda x: x % 2 == 0, nums))
print(even) # خروجی: [2, 4]
# استفاده از lambda در مرتبسازی
people = [('Ali', 25), ('Reza', 30), ('Sara', 20)]
people_sorted = sorted(people, key=lambda x: x[1])
print(people_sorted) # خروجی: [('Sara', 20), ('Ali', 25), ('Reza', 30)]