آشنایی با توابعی با مقادیر بازگشتی در زبان برنامه نویسی پایتون


آشنایی با توابعی با مقادیر بازگشتی در زبان برنامه نویسی پایتون


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

جالب است بدانید که در مورد فانکشن های زبان برنامه نویسی پایتون نیز می توانیم یک دسته بندی به این صورت انجام دهیم. بعضی از فانکشن ها مشابه کارهای خدماتی هستند، به عبارت دیگر آن ها را تعریف می کنیم تا در زمان فراخوانی صرفاً یک سری دستورات را اجرا کنند. فانکشن هایی که در آموزش های قبل تعریف کردیم همه از این دست بودند چرا که این فانکشن ها در زمان فراخوانی، دستورات زیادی را اجرا می کنند و با پایان یافتن دستورات داخل بدنه ی آن ها کارشان تمام می شود. در مقابل دسته ای دیگر از فانکشن ها قرار دارند که مشابه کارهای تولیدی عمل می کنند، به این صورت که در زمان فراخوانی، یک سری از دستورات را اجرا می کنند و در نهایت یک داده را تحویل برنامه می دهند که در اصطلاح برنامه نویسی به این کار “باز گرداندن” یک داده گفته می شود. تصمیم گیری در مورد این که یک فانکشن را به چه صورت تعریف کنیم به این موضوع بستگی دارد که قرار است آن فانکشن چه کاری را انجام دهد. در این آموزش با فانکشن هایی که یک مقدار را برمی گردانند و نحوه ی تعریف آن ها آشنا خواهیم شد.

در توابعی که یک داده را برمی گردانند از دستوری استفاده می کنیم که با کلمه ی کلیدی return آغاز می شود و در ادامه ی آن داده ای که قرار است برگشت داده شود آورده می شود. داده ی برگشت داده شده می تواند انواع مختلفی داشته باشد که از آن جمله می توان به موارد زیراشاره کرد: 

یک آبجکت: یک تابع می تواند هر نوع آبجکتی را برگرداند، برای مثال این آبجکت می تواند یک عدد صحیح مانند 4 یا یک آبجکت استرینگی مانند “SokanAcademy.com” و یا یک آبجکت بولینی مانند Ture و یا هر نوع آبجکت تعریف شده ی دیگر باشد.

یک متغیر: از آن جا که هر نوع آبجکتی به عنوان داده برگشت داده شده قابل قبول است، می توانیم از نام متغیری که به یک آبجکت منتسب شده است هم به عنوان داده برگشت داده شده در ادامه ی دستور return استفاده کنیم. در این صورت در زمان فراخوانی فانکشن، آبجکت ارجاع داده شده به آن متغیر برگشت داده می شود.

یک عبارت: استفاده از انواع مختلف عبارت ها نظیر عبارت های محاسباتی یا مقایسه ای به عنوان داده ی برگشت داده شده قابل قبول است. برای مثال می توانیم به جای آن که یک متغیر را به نتیجه ی عبارت (2**6)/15 منتسب کنیم و آن متغیر را در ادامه ی دستور return به عنوان داده ی برگشتی فانکشن بیاوریم، مستقیماً همین عبارت را وارد کنیم.

مقدار برگشت داده شده توسط سایر فانکشن ها: آبجکتی که یک فانکشن برمی گرداند می تواند به عنوان یک داده برای فانکشن دیگری در ادامه ی دستور return آن بیاید. برای مثال می دانیم که فانکشن ()len یک دنباله را به عنوان آرگومان ورودی می گیرد و طول آن را برمی گرداند. در مثال زیر از مقدار برگشت داده شده توسط این فانکشن برای برگرداندن تعداد پارامترهای ورودی فانکشن ()getArgsNumber استفاده می کنیم:

def getArgsNumber(*var_arg):      return len(var_arg)  

بر اساس آموزش های قبلی، می دانیم که فانکشن ()getArgsNumber می تواند به تعداد دلخواه آرگومان بگیرد چرا که یک علامت * قبل از آرگومان ورودی قرار گرفته است. در هر نوبت فراخوانی، دستور return تعداد آرگومان های داده شده به فانکشن را بر می گرداند.

از آبجکتی که یک فانکشن برمی گرداند می توانیم در هر بخش از برنامه مانند سایر آبجکت ها استفاده کنیم، برای استفاده از آن، تنها نیاز است که فانکشن را فراخوانی کنیم. اکنون در قالب یک مثال دیگر نحوه ی تعریف و فراخوانی این نوع فانکشن ها را می بینیم. در برنامه ی زیر، فانکشنی با نام doAdd تعریف می کنیم که وظیفه ی آن این است که عملگر + را روی دو آرگومانی که می گیرد اثر دهد و نتیجه را بر گرداند. در ادامه از آبجکتی که این فانکشن برمی گرداند به عنوان آرگومان دستور پرینت استفاده می کنیم.

def doAdd(Value1, Value2):      return Value1 + Value2  print("7 + 10 =",doAdd(7,10)) # doAdd adds two Integers.  print("Welcome to",doAdd("Sokan","Academy"),"!") # doAdd concatenates two Strings.  

اسکریپت این برنامه را در فایل ReturnFunc.py ذخیره می کنیم. خروجی حاصل از اجرای این برنامه به صورت زیر است:

7 + 10 = 17  Welcome to SokanAcademy !  

همان طور که می بینید با استفاده از دستور return در بدنه ی تابع می توان یک آبجکت را برگرداند و از آن در سایر دستورات برنامه استفاده کرد.

به خاطر داشته باشید
در زمان فراخوانی یک فانکشن، به محض آن که دستور return اجرا می شود کار فانکشن به پایان می رسد و فانکشن یک آبجکت را برمی گرداند. در این حالت اگر دستورات دیگری در ادامه ی دستور return در بدنه ی تابع آمده باشند، توسط مفسر پایتون نادیده گرفته می شوند و اجرا نخواهند شد.

دانلود فایل‌های تمرین

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *