تغییر دهنده ها در زبان پایتون کدامند ؟
تغییر دهنده ها در زبان پایتون کدامند ؟
مواردي وجود داشت که تغییر یک یا چند شیء که به عنوان پارامتر بـه تـابع داده شـده بودنـد براي آن بسیار مفید بود. معمولاً فراخوانندة تابع آدرسی از اشیائی که به آن میفرستد را نگـه مـیدارد، بنابراین هر تغییراتی که تابع به وجود آورد از دید فراخوان قابل رؤیت است. توابعی که بـه ایـن صـورت کار میکنند تغییردهنده نامیده میشوند. تابع increment که تعداد معینی ثانیه را به شیء Time اضافه میکند، اگر به عنـوان یـک
تغییردهنده نوشته شود به طور طبیعیتري ظاهر میشود. پیشنویس موقتی از این تابع به این صـورت است:
def increment(time, seconds):
time.seconds = time.seconds + seconds
if time.seconds >= 60:
time.seconds = time.seconds – 60
time.minutes = time.minutes + 1
if time.minutes >= 60:
time.minutes = time.minutes – 60
time.hours = time.hours + 1
اولین خط عمل اصلی را انجام میدهد و بقیۀ خطوط مـوارد خاصـی را کـه قـبلاً بـا آن مواجـه شدهایم به کار میبرند. آیا این تابع درست است؟ اگر پارامتر seconds خیلی بـزرگتـر از شصـت باشـد چـه اتفـاقی میافتد؟ در این صورت انتقال یک رقم نقلی کافی نیست؛ ما مجبوریم این کار را تا آنجا که seconds از 60 کمتر شود انجام دهیم. یک راه حل براي استفاده از دستور while به جاي if است:
def increment(time, seconds):
time.seconds = time.seconds + seconds
while time.seconds >= 60:
time.seconds = time.seconds – 60
time.minutes = time.minutes + 1
while time.minutes >= 60:
time.minutes = time.minutes – 60
time.hours = time.hours + 1
حال این تابع درست است، اما مؤثرترین راه ممکن نیست.
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید