دستور Return در پایتون چیست؟ – آموزش به زبان ساده


در زمان یادگیری زبان برنامهنویسی پایتون یا هر زبان برنامهنویسی دیگری با عبارتی به نام return روبهرو خواهیم شد. این عبارت برای تازهکاران میتواند کمی گمراهکننده باشد. اما نگران نباشید، درباره returnو روش کار و اهمیت آن در زبان پایتون هر آنچه که لازم است را تا انتهای این مطلب، خواهید آموخت. عبارت return در پایتون باعث خروج فرایند اجرای برنامه از تابع میشود و با خود مقدار مشخص شدهای را نیز به فرایندی که تابع را فراخوانی کرده برمیگرداند. چندین عبارت returnمختلف میتوانند در یک تابع وجود داشته باشند، اما هر کدام از آنها که بتواند شرایط تابع را تامین کند اول از همه اجرا میشود. در هر تابع فقط یکبار عبارت returnاجرا میشود. پس بقیه returnهای تعریف شده، بدون اجرا باقی میمانند.
کلمه کلیدی return، از کلمات کلیدی تعریف شده در پایتون است که برای افزایش خوانایی برنامه و نوشتن کدهای تمیز بهکار برده میشود. در این مطلب از مجله فرادرس همه مطالب بنیادینی که لازم است به عنوان برنامهنویس پایتون، درباره returnبدانیم را بررسی کردهایم.
دستور return در پایتون چیست؟
دستور return در پایتون درون توابع استفاده میشود. این دستور برای پایان دادن به فرایند اجرای تابع در برنامهنویسی بهکار میرود. هر وقت نوبت به اجرای این دستور برسد تابع مورد نظر از صف اجرا خارج میشود و نتیجه آماده شده در تابع به فرایندی که تابع را فراخوانی کرده ارسال میشود. برای درک بهتر مطلب به مفهوم پیشخدمت در رستوران فکر کنید. به عبارت return به عنوان پیشخدمتی فکر کنید که غذای آماده شده -خروجی تابع- را برای مشتری یا مرجع فراخوانی تابع میآورد.
در کد پایین، روش استفاده از عبارت returnرا به صورت کاملا ساده نمایش دادهایم.
در مثال بالا، میتوانید تابع add_numbers() را با دو مقدار عددی به عنوان پارامتر فراخوانی کنید. این تابع نتیجه جمع اعداد را به بیرون برمیگرداند یا به عبارتی مقدار جواب را returnمیکند.
کاربرد عبارت return در پایتون چیست؟
شاید با خود بپرسید که چرا باید از عبارت returnاستفاده کنیم؟ آیا نمیتوان مقدار جواب تابع را به صورت مستقیم در خروجی با استفاده از تابع print() چاپ کرد؟ بدون شک، میتوان از این روش نیز استفاده کرد. اما بهرهگیری از عبارت returnانعطافپذیری بیشتری به کدها میدهد.

تصور کنید که در رستورانی قرار دارید و غذای خود را سفارش دادهاید. بعد از اینکه غذا آماده شد پیشخدمت رستوران بهجای آوردن غذا سر میز، خودش غذا را میخورد. این دقیقا شبیه به همان اتفاق است که بهجای دستور returnاز دستور print()استفاده کنیم. در این حالت تابع نوشته شده خود از نتیجه عملیات استفاده میکند بهجای اینکه نتیجه را در خروجی برگرداند. اما به عنوان نویسنده کد، شاید بخواهیم به روش مد نظر خود از نتیجه بهره ببریم که در واقع اکثر اوقات نیز همینگونه است.
با کمک دستور return، میتوانیم نتیجه اجرای تابع را تحویل بگیریم و در هر جای دیگری در برنامه به صورت دلخواه استفاده کنیم. به عنوان مثال، میتوانیم مقدار returnشده را در متغیری ذخیره کنیم یا حتی از این مقدار به عنوان ورودی برای تابع دیگری استفاده کنیم.
چگونه از عبارت return در پایتون استفاده کنیم؟
همانطور که اشاره شد در پایتون از عبارت returnبرای خروج از توابع و برگرداندن مقدار خاصی به مرجعی که تابع را فراخوانی کرده استفاده میشود. در پایین سینتکس پایه برای استفاده از عبارت returnرا مشاهده میکنید.
در کد بالا از پارامترها و کلمات کلیدی مختلفی استفاده شده که هر کدام را در فهرست زیر توضیح دادهایم.
- def : کلمه کلیدی def در پایتون که برای شروع تعریف تابع استفاده میشود.
- function_name<b></b> : شناساگر یکتایی که برای نامگذاری تابع استفاده میشود. در واقع کلمهای که اینجا قرار میگیرد به صورت انحصاری و یکتا به عنوان نام به این تابع، اختصاص پیدا میکند.
- parameter-ها: در اینجا برای تابع دو پارامتر فرضی با نامهای parameter1 و parameter2 تعریف کردهایم. اما تعداد این پارامترها هیچ محدودیتی ندارد. هر تعداد متغیری که درون پرانتزها تعریف کنیم برای وارد کردن داده به تابع استفاده میشوند. وجود این متغیرها اختیاری است.
- return<b></b> : کلمه کلیدی است که میتوان برای خروج از تابع، حتی قبل از رسیدن به انتهای آن مورد استفاده قرار داد. البته که وجود این کلمه کلیدی نیز در تابع اختیاری است.
- return_value : مقدار یا متغیری که باید از درون تابع به خارج برگردانده شود. وجود این مقدار نیز اختیاری است.
چگونه در کار با زبان برنامه نویسی پایتون پیشرفت کنیم؟
برای اینکه بتوانیم مهارتهای خود را در کار با زبان برنامهنویسی پایتون افزایش بدهیم، باید مفاهیم و ابزارهای پایتون را به صورت عمیقتری بشناسیم و نسبت به ظرایف این زبان برنامهنویسی اطلاعات بیشتری کسب کنیم. کسب این اطلاعات صرفا از طریق مطالعه امری وقتگیر و گاهی بسیار مشکل است. برای یادگیری بهتر لازم است که بخش دیداری و شنیداری مغز ما نیز فعال شود. شرکت در کلاسهای برنامهنویسی نسبت به مطالعه صرف، گزینه بسیار بهتر و کارآمدتری است. اما پیدا کردن کلاس متناسب با شرایط ما از لحاظ مالی، علمی، رفتوآمد و زمانی نیز امری مشکل است. علاوه بر این برای مرور کلاسها هم معمولا چارهای جز مطالعه جزوهها وجود ندارد.
پس بهترین گزینه ممکن استفاده از فیلمهای آموزشی است. این فیلمهای آموزشی محدودیت زمانی و مکانی ندارند. قابل بازبینی مجدد به صورت بیشمار دفعه هستند و در عین حال از قوای یادگیری دیداری و شنیداری دانشجویان نیز کار میکشند. سایت آموزشی فرادرس یکی از بهترین تولید کنندههای فیلمهای اموزشی به زبان فارسی است. کیفیت آموزشهای بالا در کنار طبقهبندی آموزشها به سطوح علمی متفاوت هم گزینه دیگری است که باعث برجسته شدن فرادرس در بین همه دانشجویان شده است.

در این بخش چند مورد از فیلمهای آموزشی متناسب با سطح این مطلب را معرفی کردهایم. در صورتی که تمایل به دیدن فیلمهای بیشتر دارید میتوانید بر روی تصویر بالا کلیک کرده یا مستقیما به وبسایت فرادرس مراجعه کنید.
- فیلم آموزش برنامه نویسی پایتون همراه با مثال های عملی در سایت فرادرس
- فیلم آموزش برنامه نویسی سریع و آسان پایتون در ۱۴۰ دقیقه در فرادرس به صورت رایگان
- فیلم آموزش برنامه نویسی Python دوره مقدماتی فرادرس
- فیلم آموزش برنامه نویسی Python دوره تکمیلی - بخش یکم از فرادرس
- فیلم آموزش کتابخانه Datetime در پایتون برای مدیریت زمان (رایگان) در وبسایت فرادرس
چه زمانی از عبارت return در پایتون استفاده کنیم؟
عبارت returnبرای برگرداندن نتیجه محاسبات یا فراخوانی دادههای خاصی استفاده میشود. استفاده دیگری که از عبارت returnمیشود خروج از تابع همزمان با رویدادن شرایط خاصی است. هر سه مورد ذکر شده را در ادامه بررسی کردهایم.
برگرداندن نتایج
وقتی که بخواهیم دادههای خاصی را از تابع به مرجع فراخوانی تابع برگردانیم استفاده از عبارت returnضروری میشود. در کد پایین تابعی را تعریف کردهایم و سپس در ادامه کد این تابع را برای محاسبه مساحت فراخوانی کردیم.
فراخوانی کردن داده
وقتی که دادههایی را از پایگاه داده یا API واکشی میکنیم، عبارت returnمیتواند دادههای واکشی شده را به فرایندی که تابع را فراخوانی کرده تحویل بدهد. کدنویسی به این صورت باعث میشود که کدها با قابلیت استفاده مجدد و ماژولار شوند. این کدها خوانایی بیشتری نیز دارند.
در کدهای پایین مثال سادهای درباره استفاده از عبارت returnبرای فراخوانی داده از طریق پایگاه داده پیادهسازی کردهایم.
خروج از توابع بر اساس شرایط تعیین شده
عبارت returnبه خروج زودهنگام از توابع نیز کمک میکند. با استفاده از این عبارت میتوان شرایط خاصی تعریف کرد که در صورت رخدادن آنها قبل از اینکه کدهای تابع تا به انتها توسط مفسر برنامهنویسی دیده و اجرا شوند از تابع خارج شویم. این امکان باعث ارتقای کارایی برنامه و کاهش احتمال وقوع خطا میشود.
در کد پایین، تابعی را برای نمایش این مطلب، پیادهسازی کردهایم. در این مثال، با استفاده از عبارت شرطی if-elif شرایط مختلفی برای تابع، تعریف شده که در صورت بروز هر کدام تابع بلافاصله ادامه اجرا را متوقف کرده و مقدار False برمیگرداند. همانطور که میبینید برای این تابع چهار بار عبارت returnتعریف شده است.
مثال های از عبارت return در پایتون
استفاده از عبارت returnدر توابع پایتون، امری بسیار رایج است. در این بخش به بررسی مثالهایی درباره استفاده از این عبارت پرداختهایم.
محاسبه هزینه ها در تجارت الکترونیک | E-Commerce
برای محاسبه مجموع قیمت کالاهای موجود در یک سبد خرید دیجیتال، پلتفرمهای تجارت الکترونیک ممکن است از تابعی همراه با عبارت returnبه صورت زیر استفاده کنند.
طبیعتا فرمول محاسبه قیمت میتواند متفاوت باشد اما قاعده کلی استفاده از عبارت returnثابت است.

احراز هویت کاربر
اپلیکیشنی که هویت کاربران را با استفاده از تابع خاصی احراز میکند نیز میتواند از عبارت returnبرای برگرداندن نتیجه در خروجی کمک بگیرد.
در کد پایین، تابع تعریف شده از عبارت شرطی برای برگرداندن دو نتیجه متفاوت استفاده کرده است. البته میتوان این کد را با استفاده از یک عبارت returnنیز نوشت. به عنوان تمرین میتوانید به بازسازی این تابع بپردازید.
علم داده
علم داده اغلب شامل استخراج اطلاعات معنادار از دادههای خام است. دادههایی مانند اندازهگیریهای آماری یکی از مواد خام مورد استفاه علم داده هستند. به عنوان مثال، تابعی را در نظر بگیرید که مجموعه دادهای را مورد پردازش قرار میدهد. این تابع باید میزان میانگین mean ، میانه median و انحراف معیار std_dev را به فرایندی که تابع را فراخوانی کرده برگرداند.
در کد پایین این تابع را شبیهسازی کردیم. توجه کنید که در مقابل عبارت returnسه مقدار به صورت همزمان کنار هم قرار داده شدهاند.
در صورتی که نسبت به علم داده یا Data Science کنجکاو هستید و می خواهید که درباره این شاخه تخصصی در برنامهنویسی و مسیر تسلط بر آن و بازار کارش اطلاعات بیشتری کسب کنید، پیشنهاد میکنیم که فیلم آموزشی رایگان آموزش مسیر تبدیل شدن به دانشمند علم داده را در فرادرس با دقت تماشا کنید.
مدیریت پاسخ در API
در حوزه توسعه نرمافزار، نرمافزارها اغلب با API-های خارجی تعامل میکنند. تابعی که در ادامه آمده روش مدیریت و انتقال پاسخهای API-ها را توسط عبارت returnنمایش میدهد. این کد تقریبا ترکیبی از کدهای بالا است و توانایی عملیاتی عبارت returnرا نمایش میدهد.
بررسی مطالب بیشتر درباره عبارت return در پایتون
در این بخش چند مورد از تواناییهای خاص عملیاتی عبارت returnرا بررسی خواهیم کرد. این تواناییهای عبارت returnباعث افزایش قدرت و کیفیت کدنویسی توابع در پایتون شدهاند.
برگرداندن مقدار None
گاهی اوقات، در توابعی که هدف اصلی از پیادهسازی آنها اجرای عملیات مشخصی است، نیاز به برگرداندن هیچ مقداری نداریم. اما در واقع هر تابعی در پایتون حتما چیزی را برگشت میدهد. توابع پایتون در چنین مواردی بهطور غیر مستقیم مقدار None برمیگردانند. به مثال پایین توجه کنید. البته که با کد return None یا حتی کد returnبدون هیچ متغیری نیز میتوان این مثال را نوشت. اما به انتهای همه توابعی که عبارت returnندارند این تکه کد بهطور پیشفرض اضافه و مقدار Noneبرگشت داده میشود.
خروج زودهنگام از تابع
وقتی که شرایط خاصی در تابع به مقادیر True یا Falseمنتهی میشوند، در صورت نیاز میتوانیم با استفاده از عبارت returnحتی پیش از پردازش کل کدهای تابع از آن خارج شویم. گاهی اوقات خروج زودهنگام از تابع میتواند اثرگذاری و خوانایی کد را نیز افزایش دهد.
در کد بالا میبینید که عبارت returnبدون هیچ پارامتری استفاده شده است. این عبارت فقط برای به پایان رساندن تابع به کد اضافه شده و به صورت پیشفرض مقدار Noneبرمیگرداند.

برگرداندن چندین مقدار به طور هم زمان
توابع پایتون با بستهبندی مقادیر مختلف در تاپل، لیست یا دیکشنری میتوانند به صورت همزمان چندین مقدار متفاوت را به مرجع فراخوانی خود برگردانند. بعضی از توابع باید وظایفی مرتبط با هم انجام دهند و نتایجی بیش از یک مقدار برگردانند. این ویژگی بهطرز باورنکردنی برای چنین توابعی مفید است. مرجع فراخوانی این نوع از تابعها نیز بهسادگی میتواند بستههای ذخیره داده را باز کند و از دادهها استفاده ببرد.
برای اینکه با انواع ساختارهای ذخیره داده در پایتون مانند موارد نامبرده شده در بالا آشنا شوید میتوانید به مطلب انواع داده در پایتون به زبان ساده در مجله فرادرس رجوع کنید. این مطلب یک دید کلی با اطلاعات کامل درباره هر کدام از ساختارهای داده استفاده شده در پایتون را در اختیار شما قرار میدهد.
در کد پایین با اینکه مقادیر برگشتی در مقابل عبارت returnفقط با کاما از یکدیگر جدا شدهاند. اما در خروجی به صورت تاپل برگردانده میشوند.
برگرداندن توابع
پایتون از توابع مرتبه بالا نیز پشتیبانی میکند. پشتیبانی از توابع مرتبه بالاتر به این معنی است که میتوانیم از درون تابعی، تابع دیگری را برگردانیم. بنابراین نیازی نیست که در مقابل عبارت returnحتما مقدار مشخصی را قرار بدهیم. این ویژگی بهطور خاص در الگوهای پیشرفته برنامهنویسی مانند دکوریتورها و فکتوریها در پایتون سودمند است.
در کد پیادهسازی شده پایین دو تابع را درون یکدیگر پیادهسازی کردهایم.
عبارت return در پایتون همراه با بلاک finally
وقتی که عبارت returnدرون بلاک try-except اجرا شود، کد بلاک finally اول از همه قبل از برگرداندن مقدار به مرجع فراخوانی تابع اجرا میشود. توجه کنید که عبارت finallyجزیی از بلاک try-except است. اگر این بخش در کد وجود داشت و کد در طول اجرا به عبارت returnرسید، اول از همه کدهای مربوط به این بخش اجرا میشود. در واقع این بخش تنها بخشی است که هنگام برخورد فرایند اجرا به عبارت returnمیتواند قبل از خروج از تابع اجرا شود.

در کد زیر دو تابع جداگانه نوشتهایم که در هر دو تابع از بلاک try-except همراه با بخش finally استفاده کردهایم.
خروجی کد بالا به صورت زیر است.
finally block hello try finally block hello except
نکته: اگر بلاک مربوط به finally خود دارای عبارت returnباشد، عبارت returnکه قبلا کد به آن برخورد کرده نادیده گرفته خواهد شد و مقداری که در بلاک finally در مقابل عبارت returnتعبیه شده به خارج از تابع برگردانده خواهد شد.
در کد زیر نمونه این حالت استثنایی را پیادهسازی کردهایم.
خروجی کد بالا به صورت زیر است.
finally block hello from finally
یادگیری پایتون همراه با اجرای پروژه های کاربردی
برای اینکه بتوانیم آموختههای خود را به صورت درونی نهادینه کنیم، بهترین روش اجرای پروژههای مربوط به دنیای واقعی است. حداقل باید بر روی پروژههایی کار کنیم که نسبت به پروژههای واقعی نزدیک و ملموس باشند. زبان برنامهنویسی پایتون به عنوان یک زبان سطح بالا تقریبا در اکثر حوزههای تولید نرم افزار قابل استفاده است. به همین ترتیب پروژههای متنوعی نیز برای این زبان برنامهنویسی قابل تعریف و پیادهسازی است. در این بخش چند مورد از فیلمهای آموزشی فرادرس را در ارتباط با یادگیری و تمرین پایتون به صورت پروژه محور معرفی کردهایم. با بررسی این پروژهها و معرفی دورهها میتوانید بهترین فیلم آموزشی را متناسب با علاقه و رشته تخصصی خودتان پیدا کنید.
- فیلم طراحی سایت و وب اپلیکیشن با فریمورک Django فرادرس
- فیلم آموزش مقدماتی ساخت ربات تلگرام با پایتون در فرادرس
- فیلم آموزش پیش بینی نارسایی قلبی با الگوریتم های یادگیری ماشین در پایتون فرادرس
- فیلم آموزش پروژه محور سی شارپ و پایتون، ساخت ربات اینستاگرام در فرادرس
- فیلم آموزش پروژه محور پایتون، ساخت بازی حافظه تصویری با کتابخانه Tkinter و Turtle در وبسایت فراردس

برای دیدن فیلمهای آموزشی بیشتر فرادرس به صورت پروژهمحور، چه در زبان برنامهنویسی پایتون و چه در سایر زبانهای برنامهنویسی، میتوانید روی عکس بالا کلیک کنید و به طور مستقیم به صفحه مجموعه آموزشهای پروژهمحور برنامهنویسی فرادرس منتقل شوید.
جمع بندی
مقدار returnدر هر تابع همان مقداری است که تابع بعد از پایان فرایند اجرا به محل فراخوانی تابع برمیگرداند. به عبارت دیگر، میتوانیم بگوییم که عبارت return، آخرین عبارتی است که هر تابع یا متد قبل از خاتمه کارش اجرا میکند. در پایتون حتی میتوانیم تابعی را از درون تابع دیگری به بیرون برگردانیم. همچنین دانستیم تابعی که عبارت returnندارد یا تابعی که در مقابل عبارت returnآن هیچ مقداری قرار نگرفته، به صورت پیشفرض، مقدار Noneبرمیگرداند.
قطعا که عبارت returnبخش ضروری از نوشتن توابع ارزشمند نیست. زیرا هدف اصلی ایجاد توابع، کپسولهسازی بلاکی از کد برای استفاده دوباره از آن در قسمتهای دیگر است. اما میتوان گفت که عبارت returnمهمترین بخش در ایجاد توابع است. زیرا این عبارت تابع را کامل میکند و خوانایی تابع را افزایش میدهد. در این مطلب از مجله فرادرس، با عبارت return و انواع کاربردها و روشهای استفاده از آن آشنا شدیم. نسبت به مزیتهایی که این عبارت برای برنامهنویسی فراهم میکند شناخت پیدا کردیم و یاد گرفتیم که چگونه به بهترین روش ممکن با کمک عبارت returnخوانایی و بهرهوری کد خود را افزایش دهیم. پس از این به بعد وقتی که در حال تعریف تابع بودید، بهجای استفاده از دستور print()سعی کنید از returnاستفاده کنید.
ممنون بابت توضیحات و مثال دقیقی که زدین