توابع لامبدا (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)]