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

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

🐍 HomeOfPython
|
📅 1404/10/18

سطح مقدماتی (Beginner Level)

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

ساختار و سینتکس (Syntax)

ساختار یک تابع لامبدا بسیار ساده است. این توابع تنها می‌توانند یک عبارت (Expression) داشته باشند و نتیجه آن عبارت به صورت خودکار بازگردانده می‌شود (Return ضمنی).

فرمول کلی: lambda arguments: expression

python
# ساختار کلی (Static - صرفاً جهت نمایش سینتکس)
# lambda ورودی‌ها : عملیاتی که باید انجام شود
func = lambda x: x + 1

مثال اول: توابع ریاضی ساده

در این مثال تفاوت تعریف یک تابع معمولی با def و همان تابع با lambda را مشاهده می‌کنید.

Python

مثال دوم: استفاده بدون نام‌گذاری

یکی از ویژگی‌های اصلی لامبدا این است که نیاز نیست حتماً آن را در یک متغیر ذخیره کنید. می‌توانید بلافاصله آن را اجرا کنید (اگرچه این کار در سطح مقدماتی کمتر رایج است).

Python

مثال سوم: لامبدا بدون ورودی

توابع لامبدا می‌توانند هیچ ورودی‌ای نداشته باشند و صرفاً یک مقدار ثابت یا نتیجه یک عملیات را برگردانند.

Python

سطح پیشرفته (Professional Level)

در سطح حرفه‌ای، توابع لامبدا به ندرت به تنهایی استفاده می‌شوند. قدرت اصلی آن‌ها زمانی نمایان می‌شود که به عنوان آرگومان به توابع سطح بالا (Higher-Order Functions) مانند map، filter، sort و reduce پاس داده می‌شوند. همچنین درک محدودیت‌ها و استانداردهای PEP8 برای استفاده از آن‌ها ضروری است.

استفاده در توابع Map و Filter

این توابع برای اعمال تغییرات یا فیلتر کردن لیست‌ها بسیار کارآمد هستند و لامبدا کدنویسی آن‌ها را بسیار تمیزتر می‌کند.

Python

مرتب‌سازی پیشرفته (Custom Sorting with Key)

یکی از مهم‌ترین کاربردهای لامبدا در پایتون، استفاده به عنوان کلید (key) در تابع sorted() یا متد .sort() برای لیست‌هایی است که شامل دیکشنری یا تاپل هستند.

Python
Python

شرط‌های خطی در لامبدا (Conditional Logic)

شما نمی‌توانید از بلوک‌های if/else معمولی درون لامبدا استفاده کنید، اما می‌توانید از عملگرهای شرطی یک‌خطی (Ternary Operator) بهره ببرید.

Python

محدودیت‌ها و نکات PEP8

طبق استاندارد PEP8، اگر قرار است یک تابع لامبدا را به یک نام (متغیر) اختصاص دهید، بهتر است از def استفاده کنید. لامبداها برای استفاده‌های یک‌بار مصرف طراحی شده‌اند.

روش غلط (Not Recommended):

python
# Static: PEP8 Warning (E731)
f = lambda x: x * 2

روش صحیح (Recommended):

python
# Static: Use def for named functions
def f(x):
    return x * 2

تابع Reduce

تابع reduce از ماژول functools برای تجمیع داده‌ها استفاده می‌شود و معمولاً با لامبدا همراه است.

Python