توابع محض در پایتون چیست ؟
توابع محض در پایتون چیست ؟
به زودي ما دو نسخه از یک تابع به نام addTime را خواهیم نوشـت کـه مجمـوع دو زمـان را محاسبه میکند. آنها دو نوع از توابع را نشان خواهند داد: توابع محض و تغییردهندهها. در زیر نسخۀ اجمالی از تابع addTime را میبینید:
def addTime(t1, t2):
sum = Time()
sum.hours = t1.hours + t2.hours
sum.minutes = t1.minutes + t2.minutes
sum.seconds = t1.seconds + t2.seconds
return sum
تابع یک شیء Time جدید میسازد، مشخصههاي آن را مقدار دهی میکند و آدرسی به شـیء جدید را برمیگرداند. این تابع، یک تابع محض نامیده میشود زیرا هیچکدام از اشـیائی کـه بـه عنـوان پارامتر به آن فرستاده شده را تغییر نمیدهد و هیچ اثرات جانبی از قبیل نمایش یک مقـدار یـا گـرفتن یک ورودي از کاربر ندارد.
currentTime که شامل زمان جاري است و breadTime که مدت زمان براي پختن نـان اسـت. سپس ما از addTime براي بهدست آوردن لحظهاي که نان پخته میشود استفاده میکنیم. اگر هنـوز نوشتن تابع printTime را تمام نکردهاید، قبل از اینکه شروع به کار کنید 14-2 نگاهی بیاندازید:
>>> currentTime = Time()
>>> currentTime.hours = 9
>>> currentTime.minutes = 14
>>> currentTime.seconds = 30
>>> breadTime = Time()
>>> breadTime.hours = 3
>>> breadTime.minutes = 35
>>> breadTime.seconds = 0
>>> doneTime = addTime(currentTime, breadTime)
>>> printTime(doneTime)
خروجی برنامه 30:49:12 است که درست میباشد. از طرف دیگـر مـواردي وجـود دارد کـه نتیجه درست نخواهد بود. آیا میتوانید یکی از این موارد را حدس بزنید؟ مشکل آنجا است که این تابع وقتی که تعداد ثانیهها یا دقایق بیشتر از شصت میشـود درسـت عمل نمیکند. وقتی این حالت اتفاق میافتد ما مجبوریم ثانیههاي اضافی را بـه سـتون دقیقـههـا و یـا دقیقههاي اضافی را به ستون ساعتها انتقال دهیم. در اینجا نسخۀ دوم و تصحیح شدة تابع را میبینید:
def addTime(t1, t2):
sum = Time()
sum.hours = t1.hours + t2.hours
sum.minutes = t1.minutes + t2.minutes
sum.seconds = t1.seconds + t2.seconds
if sum.seconds >= 60:
sum.seconds = sum.seconds – 60
sum.minutes = sum.minutes + 1
if sum.minutes >= 60:
sum.minutes = sum.minutes – 60
sum.hours = sum.hours + 1
return sum
اگرچه این تابع درست است، اما تعداد خطوط کد آن رو بـه افـزایش اسـت. در آینـده راه حـل دیگري پیشنهاد میکنیم که کد کوتاهتري را نتیجه میدهد.
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید