ویدیو تابع لامبدا(lambda) در پایتون

امیرحسین بیگدلو June 2023

# معرفی lambda در پایتون

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

 

دوره پیشنهادی: دوره آموزش پایتون (python)

 

# چطور از lambda استفاده کنیم؟

ساختار نگارش کلی توابع لامبدا به شکل زیر است:

lambda (arguments): manipulation(arguments)

 

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

 

+ یک مثال از عبارت لامبدا

به مثال زیر دقت کنید:

add = lambda x, y: x + y
print( add(4, 6) )

در مثال بالا یک عبارت لامبدا ساختیم که دو مقدار x و y رو میگیره و اونها رو با هم جمع میکنه. و در آخر لامبدا رو داخل یک متغیر ذخیره میکنیم تا بتونیم بعدا ازش استفاده کنیم. در خط آخر هم لامبدا رو صدا زدیم و دو عدد رو بهش فرستادیم. اگه کد بالا رو اجرا کنید مقدار ۱۰ رو به شما برمیگردونه. دقت کنید که لامبدا به صورت اتوماتیک مقدار نهایی رو return میکنه.

 

 

+ چرا از تابع لامبدا استفاده کنیم؟

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

 

یکی از مهمترین موارد استفاده رایج برای lambda، برنامه نویسی فانکشنال است زیرا پایتون از پارادایم (یا سبک) برنامه نویسی که به عنوان برنامه نویسی فانکشنال شناخته می شود پشتیبانی می کند.

 

لامبدا به شما این امکان را می دهد که یک تابع را به عنوان پارامتر به یک تابع دیگر (به عنوان مثال، در map، filter و غیره) ارائه دهید. در چنین مواردی، استفاده از lambda به لطف ایجاد یک تابع یک بارمصرف، مفید است.

 

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

 

ویدیو پیشنهادی: ویدیو آموزش فانکشن های map, filter, reduce در پایتون

 

# استفاده از تابع lambda با filter

تابع filter برای فیلتر کردن برخی عناصر خاص از یک دنباله استفاده می شود. دنباله مورد استفاده در این تابع یک آبجکت ‌iterable مانند لیست ها ، مجموعه ها ، چندتایی ها و غیره است.

sequences = [10,2,8,7,5,4,3,11,0, 1]
filtered_answer = filter (lambda x: x > 6, sequences) 
print(list(filtered_answer))


# OUTPUT
# [10, 8, 7, 11]

 

 

# استفاده از تابع lambda با map

تابع map برای استفاده از یک عملیات خاص برای هر عنصر در یک دنباله استفاده می شود.

sequences = [10,2,8,7,5,4,11]
squared_result = map (lambda x: x*x, sequences) 
print(list(squared_result))


# OUTPUT
# [100, 4, 64, 49, 25, 16, 121]

 

اگر این ویدیو را دوست داشتید، پیشنهاد میکنیم ویدیو آشنایی عمیق با function در پایتون را هم ببینید.

ویدیوهای مشابه



ارسال نظر


Sobhan

1 ماه قبل پاسخ به نظر

خیلی خوب بود سپاس:)))

ارسال نظر



علی

2 ماه قبل پاسخ به نظر

بسیارعالی ممنون از توضیح خوبتون

ارسال نظر



hadi

5 ماه قبل پاسخ به نظر

بسیار عالی
هم توضیح شفاف هم مثال ها
همه چیز عالی
تشکر ازتون

ارسال نظر



Ali

1 سال قبل پاسخ به نظر

عالی بود، برای یادگیری توابع لامبدا سرچ زدم این کلیپ رو دیدم، ولی کنارش با توابع مفید دیگری مثل filter, map هم آشنا شدم.
متشکرم

ارسال نظر



saeed

1 سال قبل پاسخ به نظر

سلام خسته نباشید و ممنون بابت اموزش های با کیفیت چند وقتیه امکان دانلود به سایت اضافه شده و سرعت پخش از ان حذف شده ممنون میشم اگه سرعت پخش هم به سایت اضافه بشه
با تشکر.

ارسال نظر



learner

2 سال قبل پاسخ به نظر

سلام میشه یه دوره یا تک قسمتی هم بذارید در مورد پارادایم های مختلف برنامه نویسی بگید؟

ارسال نظر



محمدعلی

2 سال قبل پاسخ به نظر

سلام
این تابع filter که اینجا گفتید ، با اونکه تو جنگو هست فرق داره ؟
چون اصلا ربطی به هم ندارن انگار !

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

سلام
بله
فرق دارن

مهدی

2 سال قبل پاسخ به نظر

ممنون از لطفتون بنده تازه پایتون رو شروع کردم و بسیار عالی بود

ارسال نظر



رحمن زاده

2 سال قبل پاسخ به نظر

عالی بود
فقط چطوری دانلودش کنم؟

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

نمیتونی :)

امیر محمد

3 سال قبل پاسخ به نظر

عالی بود - ممنون از اینکه رایگان قرار میدید :)

ارسال نظر



سالاز

3 سال قبل پاسخ به نظر

❤❤❤ عالی بود

ارسال نظر



امیرحسین بیگدلو

3 سال قبل

ممنون

مونگارد