توابع lambda
ایجاد یک تابع به طور معمول با استفاده از def صورت می گیرد و به طور خودکار آن را به یک متغیر اختصاص می دهد. این کار نسبت به ساخت دیگر object ها متفاوت است - مانند رشته ها و اعداد صحیح - که می توانند در هنگام کد نویسی و در هر جایی ایجاد شوند بدون اینکه آنها را به یک متغیر اختصاص دهید. همان کار با توابعی امکان پذیر است، در صورتی که با استفاده از lambda ایجاد می شوند. توابع ایجاد شده در این روش ناشناس هستند. این رویکرد اغلب هنگام انتقال یک تابع ساده به عنوان یک استدلال به عملکرد دیگر استفاده می شود. نحوه عملکرد آن در مثال زیر نشان داده شده است و شامل کلید واژه lambda است که به دنبال آن یک لیست از استدلال، کولون و بیانات برای ارزیابی و بازگشت پاسخ در نظر گرفته شده است.
def my_func(f, arg):
return f(arg)
my_func(lambda x: 2*x*x, 5)
نکته: تابع lambda نام خود را از محاسبات لامبدا دریافت می کنند که یک مدل محاسباتی است که توسط کلیسای آلونزو اختراع شده است. توابع لامبدا مانند توابع معمولی، قدرتمند نیستند. آنها تنها می توانند کارهایی را انجام دهند که نیاز به یک عمل واحد دارند - معمولا معادل یک خط کد است. مثال:
#named function
def polynomial(x):
return x**2 + 5*x + 4
print(polynomial(-4))
#lambda
print((lambda x: x**2 + 5*x + 4) (-4))
خروجی:
>>>
0
0
>>>
نکته: در کد بالا، ما یک تابع ناشناس ایجاد کردیم و با یک استدلال آن را نامگذاری کردیم. توابع lambda را می توان به متغیرها اختصاص داد و از توابع عادی استفاده کرد. مثال:
double = lambda x: x * 2
print(double(7))
خروجی:
>>>
14
>>>
نکته:با این حال، به ندرت دلیل خوبی برای انجام این کار وجود دارد - معمولا بهتر است یک تابع با def تعریف کنیم.