لانبدا (Lambda)
«لانبدا پایتون (Python Lambda)» یعنی «تابع بی نام». کوچک است و فقط یک «عبارت (Expression)» دارد. اما ورودی ها می توانند زیاد باشند. برای مرور سریع، لانبدا پایتون را همیشه همین جا دارید.
تعریف و نحو لانبدا
لانبدا یک عبارت را اجرا می کند و نتیجه را برمی گرداند. مثل میان بُر ماشین حساب در گوشی.
x = (lambda a: a + 10)
print(x(5))
چند آرگومان در لانبدا
لانبدا می تواند چند ورودی بگیرد؛ اما فقط یک عبارت دارد.
x = (lambda a, b: a * b)
print(x(5, 6))
x = (lambda a, b, c: a + b + c)
print(x(5, 6, 2))
چرا لانبدا مفید است؟
قدرتش وقتی مشخص می شود که داخل تابع دیگری استفاده شود. مثل ساخت «کارخانه ضرب».
def myfunc(n):
return (lambda a: a * n)
حالا یک «دوبل کننده» بساز.
def myfunc(n):
return (lambda a: a * n)
mydoubler = myfunc(2)
print(mydoubler(11))
و یک «سه برابرکننده» هم بساز.
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(mytripler(11))
نکته: لانبدا برای کارهای کوتاه و موقت عالی است. برای رفتارهای پیچیده، از تابع معمولی استفاده کن. اگر دنبال تزئین رفتار هستی، سر بزن به دکوراتور ها.
لانبدا همراه map، filter و sorted
تابع های کاربردی مثل map()، filter() و sorted() با لانبدا خیلی می درخشند.
لانبدا با map()
map روی هر عضو لیست عمل می کند. مثل تکلیف ضرب برای همه نمره ها.
numbers = [1, 2, 3, 4, 5]
doubled = list(map((lambda x: x * 2), numbers))
print(doubled)
لانبدا با filter()
filter مواردی را که شرطشان درست است نگه می دارد. مثل فیلتر افراد قدبلند در تیم.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_numbers = list(filter((lambda x: x % 2 != 0), numbers))
print(odd_numbers)
لانبدا با sorted()
می توانی کلید مرتب سازی سفارشی بدهی. مثل مرتب سازی دانش آموزان بر اساس سن.
students = [("Emil", 25), ("Tobias", 22), ("Linus", 28)]
sorted_students = sorted(students, key=(lambda x: x[1]))
print(sorted_students)
یا بر اساس طول رشته ها مرتب کن.
words = ["apple", "pie", "banana", "cherry"]
sorted_words = sorted(words, key=(lambda x: len(x)))
print(sorted_words)
گام های عملی
- یک لانبدا ساده بساز و خروجی را چاپ کن.
- لانبدا چندورودی بساز و ضرب یا جمع کن.
- کارخانه ضرب با لانبدا درون تابع بساز.
- لانبدا را با map، filter و sorted تمرین کن.
جمع بندی سریع
- لانبدا بی نام است و یک عبارت دارد.
- ورودی ها می توانند زیاد باشند.
- برای کارهای کوتاه عالی است.
- با map و filter و sorted می درخشد.
نکته: اگر به تزئین رفتار علاقه داری، صفحه دکوراتور ها و برای ورودی های منعطف *args / **kwargs را ببین.