عمومی

راهنمای توابع لامبدا پایتون، همراه با مثال

راهنمای توابع لامبدا پایتون، همراه با مثال

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

اگرچه پایتون یک زبان برنامه نویسی شی گرا است، اما توابع لامبدا زمانی مفید هستند که انواع مختلفی از برنامه نویسی تابعی را انجام می دهید. توجه: این مقاله فرض می‌کند که برنامه‌نویسی پایتون و نحوه استفاده از یک تابع معمولی را درک کرده‌اید. همچنین فرض بر این است که پایتون 3.8 یا بالاتر را روی دستگاه خود نصب کرده اید.

معرفی سایت: 6 وب سایت برای الهام گرفتن از طراحی برند

تبیین توابع لامبدا پایتون

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

توجه: بسته به زبان برنامه‌نویسی می‌توان از عبارت‌های توابع لامبدا، عبارات لامبدا و شکل‌های لامبدا به جای یکدیگر استفاده کرد.یا برنامه نویس.توابع لامبدا بیشتر به عنوان یک لاینر استفاده می شوند.آنها اغلب در توابع درجه بالاتر مانند map() و filter() استفاده می شوند.این به این دلیل است که توابع ناشناس به عنوان آرگومان به توابع درجه بالاتر ارسال می شوند، که فقط در برنامه نویسی پایتون انجام نمی شود.یک تابع لامبدا همچنین برای مدیریت درک لیست در پایتون بسیار مفید است — با گزینه‌های مختلف برای استفاده از عبارات لامبدا پایتون برای این منظور.

لمبداها وقتی برای رنینگ شرطی در چارچوب‌های رابط کاربری مانند Tkinter استفاده می‌شوند، عالی هستند، wxPython، Kivy، و غیره.

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

چیزهایی که قبل از پرداختن به توابع لامبدا پایتون باید فهمید

دف سلام(name)  بازگشت f'Hello  {name}' سلام = سلام با سلام('Clint') >>>> سلام کلینت

از آنجایی که پایتون یک زبان برنامه نویسی شی گرا است، همه چیز یک شی است. کلاس‌های پایتون، نمونه‌های کلاس، ماژول‌ها و توابع همگی به‌عنوان آبجکت مدیریت می‌شوند. یک شی تابع را می توان به یک متغیر اختصاص داد. تخصیص متغیرها به توابع معمولی در پایتون غیر معمول نیست. این رفتار را می توان برای توابع لامبدا نیز اعمال کرد. این به این دلیل است که آنها اشیاء تابع هستند، حتی اگر بی نام باشند:

توابع مرتبه بالاتر مانند map()، filter()، و reduce()

 نام‌ها = ['Clint'، 'Lisa'، 'Asake '، 'Ada'] greet_all = لیست(نقشه(greet، names)) چاپ(greet_all) >>>> ['سلام کلینت'، 'Hello Lisa'، 'Hello Asake'، "سلام آدا"]
 اعداد = [11، 12، 13، 14،  15، 16، 17، 18، 19، 20] def چندین_از_سه(x)  بازگشت x % 3 ==  چاپ(لیست(فیلتر(چندین_از_سه، اعداد ))) >>>> [12، 15، 18]
 اعداد = [1، 2، 3، 4،  5، 6، 7، 8، 9، 10] def add_numbers(x، y)  بازگشت x * y چاپ(کاهش(add_numbers، اعداد)) >>>> 55

احتمالاً باید از یک تابع لامبدا در توابع داخلی مانند filter() و map() و همچنین با reduce استفاده کنید. () – که از ماژول functools در پایتون وارد شده است، زیرا یک تابع داخلی نیست. به طور پیش فرض، توابع مرتبه بالاتر توابعی هستند که توابع دیگری را به عنوان آرگومان دریافت می کنند. همانطور که در مثال‌های کد زیر مشاهده می‌شود، توابع عادی را می‌توان با لامبدا جایگزین کرد که به عنوان آرگومان به هر یک از این توابع مرتبه بالاتر منتقل می‌شوند:

تفاوت بین یک عبارت و یک عبارت

square_of_three = 3 ** 2 چاپ(square_of_three) >>>> 9
برای و در محدوده(لن (اعداد)، ، -1)   اگر i % 2 == 1  چاپ(i) دیگر  چاپ("حتی") >>>> حتی 9 حتی 7 حتی 5 حتی 3 حتی 1

یک نقطه سردرگمی مشترک در میان توسعه دهندگان، تمایز بین یک عبارت و یک عبارت در برنامه نویسی است. یک گزاره هر قطعه کدی است که کاری انجام می‌دهد یا عملی را انجام می‌دهد – مانند شرایط if یا while. یک عبارت از ترکیبی از متغیرها، مقادیر و عملگرها ساخته می‌شود و به یک مقدار جدید ارزیابی می‌شود. این تمایز با بررسی موضوع توابع لامبدا در پایتون مهم است. عبارتی مانند شکل زیر مقداری را برمی گرداند:یک عبارت به این شکل است:

نحوه استفاده از توابع Python Lambda

lambda آرگومان‌های   عبارت 
add_number = لامبدا x ، y   x + y چاپ(add_number(10، 4)) >>>> 14
قیمت
قیمت_تخفیف شده = لامبدا ، تخفیف = 0.1، vat = 0.02   قیمت * (1 - تخفیف) * ( 1 + vat) چاپ(discounted_price(1000، vat=0.04 ، تخفیف=0.3)) >>>> 728.0
چاپ((لامبدا x، y  x - y)( 45، 18)) >>>> 27
لیست_my = [(لامبدا x  x * 2)(x ) برای x در  محدوده(10) اگر x % 2 == ] چاپ(my_list) >>>> [، 4، 8، 12، 16] 
مقدار = [(لامبدا x  x % 2 و «فرد» یا «حتی»)(x) برای x در my_list] چاپ(value) >>>> [«حتی»، "حتی"، "حتی"،  "حتی"، "حتی" ]
test_condition1 = لامبدا x   x / 5 اگر x > 10 دیگر x + 5 چاپ(test_condition1(9)) >>>> 14
test_condition2 = لامبدا x   f'{x} زوج است' اگر x % 2 ==  دیگر (لامبدا x  f'{x} فرد است')(x) چاپ(test_condition2(9)) >>>> 9 ش فرد است

راهنمای سبک پایتون تصریح می‌کند که هر تابع لامبدا باید با کلمه کلیدی lambda شروع شود (برخلاف توابع معمولی که با کلمه کلیدی def شروع می‌شوند).سینتکس یک تابع لامبدا به طور کلی به این صورت است:توابع لامبدا می توانند هر تعداد آرگومان موقعیتی، آرگومان کلیدواژه یا هر دو را به همراه یک دونقطه و تنها یک عبارت داشته باشند.نمی تواند بیش از یک عبارت وجود داشته باشد، زیرا از نظر نحوی محدود شده است.بیایید نمونه ای از عبارت لامبدا را در زیر بررسی کنیم:از مثال بالا، عبارت lambda به متغیر add_number اختصاص داده شده است.

نوشته دیگر :   گیم سرور های ایرانی

فراخوانی تابع با ارسال آرگومان هایی انجام می شود که به 14 ارزیابی می شود.اجازه دهید مثال دیگری را در زیر بیاوریم:همانطور که در بالا مشاهده شد، تابع لامبدا به 728.0 ارزیابی می شود.ترکیبی از آرگومان های موقعیتی و کلیدواژه در تابع لامبدا پایتون استفاده می شود.در حالی که از آرگومان های موقعیتی استفاده می کنیم، نمی توانیم ترتیب مشخص شده در تعریف تابع را تغییر دهیم.با این حال، می‌توانیم آرگومان‌های کلیدواژه را در هر موقعیتی فقط بعد از آرگومان‌های موقعیتی قرار دهیم.توابع لامبدا همیشه درست مانند عبارات تابع بلافاصله فراخوانی شده (IIFE) اجرا می شوند.

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

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

نمونه های زیر را بررسی کنید:

توابع لامبدا در توابع مرتبه بالاتر

square_of_numbers = لیست(نقشه( lambda x  x ** 2 ، محدوده(10))) چاپ(square_of_numbers) >>>> [، 1، 4، 9، 16،  25، 36، 49، 64، 81] پیش>
رشته‌ها = ["نیجریه"، "غنا"، 'نیجر'، 'کنیا '، 'اتیوپی'، "آفریقای جنوبی"، "تانزانیا"، "مصر"، ' مراکش، "اوگاندا"] length_of_strings = لیست(نقشه(لامبدا x  لن(x)، strings)) چاپ(length_of_strings) >>>> [7، 5، 5، 5، 8،  12، 8، 5، 7، 6] پیش>
length_of_strings_above_five = لیست(فیلتر( لامبدا x  لن(x) > 5 , strings)) چاپ(length_of_strings_above_five) >>>> ["نیجریه"، "اتیوپی"، "آفریقای جنوبی" ، "تانزانیا"، "مراکش"، "اوگاندا"]
fruits_numbers_alphanumerics = ['apple'، '123'، 'python3'، '4567 '، 'انبه'، 'نارنجی'، 'web3'، 'موز'، '890 '] میوه ها = لیست( فیلتر(لامبدا x  x. isalpha()، fruits_numbers_alphanumerics)) اعداد = لیست( فیلتر(لامبدا x  x. isnumeric()، fruits_numbers_alphanumerics)) چاپ(میوه‌ها) چاپ(اعداد) >>>> ['apple'، 'انبه'، 'نارنجی'،  'banana'] ['123', '4567', '890']
values = [13, 6, 12, 23, 15, 31, 16, 21] max_value = reduce(lambda x,y  x if (x > y) else y, values) print(max_value) >>>> 31
nums = [1, 2, 3, 4, 5, 6] multiplication_of_nums = reduce(lambda x,y  x*y, nums) print(multiplication_of_nums) >>>> 720

مفهوم توابع مرتبه بالاتر در پایتون نیز مانند سایر زبان ها رایج است. آنها توابعی هستند که توابع دیگر را به عنوان آرگومان می پذیرند و همچنین توابع را به عنوان خروجی برمی گردانند. در پایتون، یک تابع مرتبه بالاتر دو آرگومان می گیرد: یک تابع و یک تکرار. آرگومان تابع برای هر آیتم در شی تکرار پذیر اعمال می شود. از آنجایی که می‌توانیم یک تابع را به‌عنوان آرگومان به یک تابع مرتبه بالاتر ارسال کنیم، می‌توانیم به همان اندازه یک تابع لامبدا را ارسال کنیم. در اینجا چند نمونه از یک تابع لامبدا استفاده شده با تابع map() آورده شده است:در اینجا برخی از توابع لامبدا استفاده شده با تابع filter() آورده شده است:Here are some lambda functions used with the reduce() function:منبع: https://thermowoods.ir/6-وب-سایت-برای-الهام-گرفتن-از-طراحی-برند/