آشنایی با توابع Lambda در پایتون

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

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

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

 

# استفاده از تابع lambda در پایتون

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

lambda (arguments): expression

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

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

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

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

داشتن آرگومان برای توابع lambda پایتون اجباری نیست و میتوانید لامبداهایی ایجاد کنید که هیچ آرگومانی ندارند. به مثال زیر دقت کنید:

>>> u = lambda : print("Hello...")
>>> u()
Hello...

در مثال بالا میبینید که تابع لامبدایی که ایجاد کردیم هیچ آرگومانی ندارد.

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

# مثال تابع لامبدا

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

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

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

مثال بعدی استفاده از توابع لامبدا در کنار تابع map پایتون است. تابع map میتواند تک تک آیتم هایی که درون یک دنباله وجود دارد را به عنوان آرگومان به توابع دیگر ارسال کند. به مثال زیر دقت کنید:

>>> nums = [10,2,8,7,5,4,11]
>>> list( map ( lambda x: x*x, nums ) )
[100, 4, 64, 49, 25, 16, 121]

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

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

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



ماژول atexit پایتون
امیرحسین بیگدلو

ارسال نظر


Sobhan

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

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

ارسال نظر



علی

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

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

ارسال نظر



hadi

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

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

ارسال نظر



Ali

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

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

ارسال نظر



saeed

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

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

ارسال نظر



learner

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

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

ارسال نظر



محمدعلی

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

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

ارسال نظر



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

2 سال قبل

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

مهدی

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

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

ارسال نظر



رحمن زاده

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

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

ارسال نظر



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

3 سال قبل

نمیتونی :)

امیر محمد

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

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

ارسال نظر



سالاز

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

❤❤❤ عالی بود

ارسال نظر



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

3 سال قبل

ممنون

مونگارد