در این آموزش، جنبه‌های مختلف توابع لامبدا در پایتون، از جمله نحو، موارد استفاده و محدودیت‌های آن‌ها را بررسی خواهیم کرد.

با درک روش استفاده موثر از توابع لامبدا، می توانید کد پایتون مختصر و کارآمدتری بنویسید. این مهارت های برنامه نویسی شما را افزایش می دهد و پایگاه کد شما را تمیزتر و مدیریت آن را آسان تر می کند.

فهرست مطالب:

  1. توابع لامبدا در پایتون چیست؟
  2. نحو تابع لامبدا و کاربردهای اساسی
  3. راه های فراخوانی توابع لامبدا
    – اختصاص دادن به یک متغیر
    – فراخوانی مستقیم تابع لامبدا
    – استفاده به عنوان یک استدلال برای توابع مرتبه بالاتر
  4. موارد استفاده اضافی
  5. نتیجه

توابع لامبدا در پایتون چیست؟

در پایتون، یک تابع لامبدا یک تابع کوچک و ناشناس است که با استفاده از آن تعریف می شود lambda کلمه کلیدی.

این توابع معمولاً برای عملیات کوتاه و دور ریختنی استفاده می شوند که در آن تعریف کامل عملکرد ممکن است بیش از حد باشد. آنها ناشناس نامیده می شوند زیرا نیازی به نام ندارند (اگرچه می توان آنها را برای استفاده مجدد به یک متغیر اختصاص داد).

توابع لامبدا در سناریوهایی که به یک تابع سریع و ساده برای مدت کوتاهی نیاز دارید برتری می‌یابند و تعریف کامل تابع بیش از حد است. این آنها را برای عملیاتی که ساده هستند و می توان در یک خط نوشت، ایده آل می کند، مانند محاسبات ساده ریاضی یا تبدیل داده های اساسی.

آنها به ویژه در زمینه های برنامه نویسی تابعی با توابع مرتبه بالاتر مانند استفاده می شوند map، filter، و reduce جایی که آنها اغلب به عنوان استدلال منتقل می شوند. فقط به یاد داشته باشید که برای عملیات پیچیده تر، توابع منظم به دلیل خوانایی و قابلیت نگهداری ترجیح داده می شوند.

نحو تابع لامبدا و کاربردهای اساسی

lambda arguments: expression

# to give it a name, assign it to a variable:
function_name = lambda arguments: expression

# this is equivalent to:
def function_name(arguments):
	return expression

بر خلاف توابع منظم تعریف شده با def، توابع لامبدا به دلیل طراحی ساده و مختصر به یک عبارت محدود می شوند. آنها می توانند آرگومان های منفرد یا چندگانه بگیرند، اما نمی توانند شامل عبارات یا عبارت های متعدد باشند.

توابع لامبدا برای عملیات کوتاه و ساده ای هستند که می توانند در یک خط نوشته شوند.

مثال:

اگرچه توابع لامبدا فقط می توانند شامل یک عبارت باشند، اما هنوز می توانیم کارهای زیادی با آنها انجام دهیم.

به عنوان مثال، در اینجا یک تابع Lambda برای به هم پیوستن 2 رشته و تبدیل آنها به حروف بزرگ وجود دارد:

راه های فراخوانی توابع لامبدا

در اصل سه راه برای استفاده یا فراخوانی توابع لامبدا وجود دارد:

پیشنهاد می‌کنیم بخوانید:  رفع خطای "xlrd.biffh.XLRDError: فایل xlsx Excel؛ پشتیبانی نمی شود"

1. اختصاص دادن به یک متغیر

تابع لامبدا را به یک متغیر اختصاص دهید و سپس آن را با استفاده از آن متغیر فراخوانی کنید:

2. فراخوانی مستقیم تابع لامبدا

با قرار دادن تعریف در پرانتز و ارائه مستقیم آرگومان ها، تابع لامبدا را تعریف و بلافاصله فراخوانی کنید:

3. استفاده به عنوان یک استدلال برای توابع مرتبه بالاتر

توابع لامبدا اغلب به عنوان آرگومان برای توابع مرتبه بالاتر استفاده می شوند map، filter، و reduce.

اینها توابعی هستند که توابع دیگری را به عنوان آرگومان می گیرند. آنها به پردازش مجموعه داده ها (مانند لیست ها یا تاپل ها) در یک سبک برنامه نویسی تابعی کمک می کنند.

استفاده از توابع لامبدا با map()

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

# syntax

map(function, iterable)
  • function در اینجا یک آرگومان می گیرد و مقداری را برمی گرداند.
  • عناصر تکرار شونده (به عنوان مثال، list، tuple) به تابع منتقل می شود.

مثال:

توضیح: در این کد از یک تابع لامبدا برای تعریف یک تابع کوچک و ناشناس استفاده می کنیم که هر جفت اعداد را گرفته و ضرب آنها را چاپ می کند.

این map تابع این تابع لامبدا را برای هر جفت (جفت) در لیست اعمال می کند. پیچیدن map تماس با list اطمینان حاصل می کند که تابع لامبدا برای هر جفت اجرا می شود. در نتیجه، کد نتایج ضرب را برای هر جفت در لیست چاپ می کند و خروجی هایی مانند “2 * 3 = 6″، “4 * 5 = 20” و “6 * 7 = 42” را نشان می دهد.

استفاده از توابع لامبدا با filter()

این filter تابع عناصر را در یک مبتنی بر تکرار فیلتر می کند روی یک محمول مشخص فقط عناصری که گزاره برای آنها برمی گردد True در تکرار جدید گنجانده شده اند.

# syntax

filter(predicate, iterable)

Predicate تابعی است که یک آرگومان می گیرد و یک مقدار بولی (True یا False) برمی گرداند. عناصر تکرار شونده در اینجا توسط گزاره آزمایش خواهند شد.

مثال:

توضیح: در این کد با لیستی از سنین شروع می کنیم. ما از یک تابع لامبدا برای تعریف یک شرط ساده استفاده می کنیم که بررسی می کند آیا سن 18 سال یا بیشتر است.

این filter تابع این تابع لامبدا را برای هر سنی در لیست اعمال می‌کند و سنین زیر 18 سال را فیلتر می‌کند. با تبدیل نتیجه filter در یک لیست، لیستی از سنین 18 سال و بالاتر را به دست می آوریم. بالاخره ما print این لیست فیلتر شده، که منجر به سنین می شود [25, 30, 18, 42, 50, 22, 19] نمایش داده می شود، زیرا این سنین دارای معیار 18 یا بیشتر هستند.

استفاده از توابع لامبدا با reduce()

این reduce تابع یک تابع مشخص را به عناصر یک تکرار شونده به صورت تجمعی اعمال می کند تا آنها را به یک مقدار واحد کاهش دهد. بخشی از آن است functools مدول.

# syntax

from functools import reduce
reduce(function, iterable)

در اینجا، Function دو آرگومان می گیرد و یک مقدار واحد را برمی گرداند. عناصر تکرار شونده توسط تابع پردازش خواهند شد.

پیشنهاد می‌کنیم بخوانید:  چگونه بررسی کنیم که آیا یک رشته در پایتون خالی است یا وجود ندارد

مثال:

توضیح: در این کد با لیستی از اعداد شروع می کنیم. ما استفاده می کنیم reduce تابع از functools ماژول برای محاسبه مجموع تمام اعداد موجود در لیست. ما از یک تابع لامبدا برای تعریف یک عملیات جمع ساده استفاده می کنیم که دو آرگومان می گیرد. x و y، و جمع آنها را برمی گرداند. این reduce تابع این تابع لامبدا را به صورت تجمعی برای موارد موجود در لیست اعمال می کند، از جفت اول شروع می شود و تا کل لیست ادامه می یابد، مانند این:

  • در ابتدا، x اولین عنصر لیست (1) و y عنصر دوم (2) است که به 3 می رسد.
  • سپس این مجموع (3) تبدیل می شود xو عنصر بعدی در لیست (3) می شود y، بازده 6.
  • این process تا زمانی که تمام عناصر موجود در لیست جمع شوند ادامه می یابد. در نهایت، نتیجه نهایی 15 است که نشان دهنده مجموع تمام اعداد در لیست است [1, 2, 3, 4, 5].

موارد استفاده اضافی

توابع لامبدا همچنین می توانند در مرتب سازی یا سایر زمینه های برنامه نویسی کاربردی استفاده شوند. مثلا:

مرتب سازی لیست رشته ها:

در این کد لیستی به نام داریم cities حاوی نام شهرهای مختلف ما استفاده می کنیم sorted عملکردی برای مرتب کردن نام این شهرها بر اساس حروف الفبا، بدون توجه به حساسیت حروف کوچک و بزرگ. این key پارامتر در sorted تابع به ما اجازه می دهد تا یک تابع (در این مورد، یک تابع لامبدا) را برای سفارشی کردن ترتیب مرتب سازی مشخص کنیم.

تابع لامبدا lambda city: city.lower() نام هر شهر را قبل از مرتب سازی به حروف کوچک تبدیل می کند. این تضمین می‌کند که مرتب‌سازی به حروف بزرگ و کوچک حساس نیست، بنابراین شهرهایی با حروف بزرگ متفاوت یکسان رفتار می‌کنند.

پس از مرتب سازی، لیست مرتب شده به متغیر اختصاص داده می شود sorted_cities، و ما print نتیجه. خروجی لیست مرتب شده شهرها را نشان می دهد: ['America', 'Germany', 'India', 'Japan']، که در آن شهرها به ترتیب حروف الفبا بدون توجه به حروف مرتب شده اند.

توابع لامبدا در درک لیست:

توابع Lambda را می توان در درک لیست برای اعمال یک تابع به هر عنصر در یک لیست استفاده کرد.

مثال:

نتیجه

توابع لامبدا در پایتون راهی سریع و مختصر برای ایجاد توابع کوچک و دور ریختنی ارائه می دهند. آنها به ویژه در برنامه نویسی تابعی با توابع درجه بالاتر مانند map، filter، و reduce.

در حالی که توابع لامبدا قدرتمند و مختصر هستند، مطمئن شوید که استفاده از آنها را با خوانایی کد و قابلیت نگهداری متعادل می کنید. برای منطق پیچیده تر، توابع منظم با تعریف شده است def ترجیح داده می شوند زیرا از عبارات و عبارات متعدد پشتیبانی می کنند و شما می توانید مستندات را نیز اضافه کنید.

با درک و استفاده موثر از توابع لامبدا، می توانید کد پایتون مختصر و کارآمدتری بنویسید.