lambda در زبان پایتون به چه معناست ؟
lambda در زبان پایتون به چه معناست ؟
تابع دو خطی بخش قبل شاید شما را وسوسه کرده باشد که کد کوتاهتـري بـراي آن بنویسـید. پایتون نحوة نگارشی را براي نوشتن توابع کوتاه فراهم ساخته که نیل به این هدف را ممکن میسازد:
>>> zeroList = lambda n:[0 for i in range(n)]
با مقایسۀ این کد با تابع zeroList در بخش قبل، به راحتی چگـونگی کـار بـا lambda را خواهید آموخت. بعد از کلمۀ کلیدي lambda نام پارامترها ذکر میشـوند و پـس از علامـت کـولن (:)، مقـدار برگشتی. با انتساب این کد به هر متغیر، آن متغیر قابلیت یک تابع را خواهد یافت:
>> zeroList(4)
[0, 0, 0, 0]
میتوانید آرگومانهاي اختیاري را هم در توابعی که به این صورت میسازید، منظور کنید:
>> prefix=lambda x,y=’Mr.’: y+’ ‘+x
>>> print prefix(‘Janson’)
Mr. Janson
>>> print prefix(‘Janson’,’Mrs.’)
Mrs. Janson
براي اینکه مثال زیباتري را بـه شـما نشـان دهـیم، بیاییـد ابتـدا تـابع reduce کـه از توابـع پیشساختۀ پایتون است را بررسی کنیم. تابع reduce یک تابع و یک دنبالـه را بـه عنـوان آرگومـان دریافت میکند. تابعی که بهعنوان آرگومان بـه reduce فرسـتاده مـیشـود، حتمـاً بایـد مسـتقلاً دو آرگومان دریافت کند و مقداري را بازگرداند. reduce مقدار اول و دوم دنباله را برداشته و تابع مـذکور را براي آنها فرامیخواند. سپس مقدار برگشتی از تابع را با مقدار سوم از دنباله بـه تـابع مـیفرسـتد و نتیجه را با عضو چهارم دنباله به تابع میفرستد. این کار تا زمانی که اعضاي دنبالـه تمـام شـوند، ادامـه مییابد. در آخر مقدار برگشتی تابع توسط reduce برگردانده میشود. فرض کنید تابعی که به عنوان آرگومان در نظر گرفته میشود، تابعی بـراي محاسـبۀ ضـرب دو عدد باشد:
>> mult=lambda x, y : x*y
این تابع را به همـراه (1+n,-1(range بـه reduce مـیفرسـتیم. n مـیتوانـد هـر عـدد صحیحی باشد که در اینجا ما آن را با عدد 5 امتحان میکنیم:
>> print reduce(mult,range(1, 5+1))
120
این کار را براي اعداد 4 و 6 نیز تکرار کنید. جوابها 24 و 720 خواهند بود. حتماً تا بـه حـال متوجه شدهاید که این نتایج، فاکتوریل اعدادند. پس تابع factorial را بازنویسی میکنیم:
def factorial(n):
return reduce(lambda x, y : x * y, range(1, n+1), 0)
آرگومان سوم، اختیاري است. این مقدار در صورتی که مقداري در دنبالۀ فرستاده شده به عنوان آرگومان یافته نشود، برگردانده میشود. میدانید که فاکتوریل عدد 0 برابر با 1 است:
>> factorial(0)
1
اما متأسفانه اشکالاتی هم در این کد وجود دارد:
>> factorial(-1)
1
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید