در زمان یادگیری زبان برنامه‌نویسی پایتون یا هر زبان برنامه‌نویسی دیگری با عبارتی به نام return

 روبه‌رو خواهیم شد. این عبارت برای تازه‌کاران می‌تواند کمی گمراه‌کننده باشد. اما نگران نباشید، درباره return

و روش کار و اهمیت آن در زبان پایتون هر آنچه که لازم است را تا انتهای این مطلب، خواهید آموخت. عبارت return در پایتون باعث خروج فرایند اجرای برنامه از تابع می‌شود و با خود مقدار مشخص شده‌ای را نیز به فرایندی که تابع را فراخوانی کرده برمی‌گرداند. چندین عبارت return

مختلف می‌توانند در یک تابع وجود داشته باشند، اما هر کدام از آن‌ها که بتواند شرایط تابع را تامین کند اول از همه اجرا می‌شود. در هر تابع فقط یکبار عبارت return

اجرا می‌شود. پس بقیه return

های تعریف شده، بدون اجرا باقی می‌مانند.

فهرست مطالب این نوشته

کلمه کلیدی return

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

بدانیم را بررسی کرده‌ایم.

دستور return در پایتون چیست؟

دستور return در پایتون درون توابع استفاده می‌شود. این دستور برای پایان دادن به فرایند اجرای تابع در برنامه‌نویسی به‌کار می‌رود. هر وقت نوبت به اجرای این دستور برسد تابع مورد نظر از صف اجرا خارج می‌شود و نتیجه آماده شده در تابع به فرایندی که تابع را فراخوانی کرده ارسال می‌شود. برای درک بهتر مطلب به مفهوم پیشخدمت در رستوران فکر کنید. به عبارت return

به عنوان پیشخدمتی فکر کنید که غذای آماده شده -خروجی تابع- را برای مشتری یا مرجع فراخوانی تابع می‌آورد.

در کد پایین، روش استفاده از عبارت return

را به‌ صورت کاملا ساده نمایش داده‌ایم.

1def add_numbers(num1, num2):
2    return num1 + num2

در مثال بالا، می‌توانید تابع add_numbers()

 را با دو مقدار عددی به عنوان پارامتر فراخوانی کنید. این تابع نتیجه جمع اعداد را به بیرون برمی‌گرداند یا به عبارتی مقدار جواب را return

می‌کند.

کاربرد عبارت return در پایتون چیست؟

شاید با خود بپرسید که چرا باید از عبارت return

استفاده کنیم؟ آیا نمی‌توان مقدار جواب تابع را به صورت مستقیم در خروجی با استفاده از تابع print()

 چاپ کرد؟ بدون شک، می‌توان از این روش نیز استفاده کرد. اما بهره‌گیری از عبارت return

انعطاف‌پذیری بیشتری به کدها می‌دهد.

کیبورد کامپیوتر که از لای دکمه‌هایش نور به بیرون می اید - Return در پایتون

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

از دستور print()

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

با کمک دستور return

، می‌توانیم نتیجه اجرای تابع را تحویل بگیریم و در هر جای دیگری در برنامه به صورت دلخواه استفاده کنیم. به عنوان مثال، می‌توانیم مقدار return

شده را در متغیری ذخیره کنیم یا حتی از این مقدار به عنوان ورودی برای تابع دیگری استفاده کنیم.

چگونه از عبارت return در پایتون استفاده کنیم؟

همان‌طور که اشاره شد در پایتون از عبارت return

برای خروج از توابع و برگرداندن مقدار خاصی به مرجعی که تابع را فراخوانی کرده استفاده می‌شود. در پایین سینتکس پایه برای استفاده از عبارت return

را مشاهده می‌کنید.

1def function_name(parameter1, parameter2):
2	# Function body
3	return return_value

در کد بالا از پارامتر‌ها و کلمات کلیدی مختلفی استفاده شده که هر کدام را در فهرست زیر توضیح داده‌ایم.

  • def

     : کلمه کلیدی که برای شروع تعریف تابع استفاده می‌شود.

  • function_name

     : شناساگر یکتایی که برای نام‌گذاری تابع استفاده می‌شود. در واقع کلمه‌ای که اینجا قرار می‌گیرد به صورت انحصاری و یکتا به عنوان نام به این تابع، اختصاص پیدا می‌کند.

  • parameter-ها: در اینجا برای تابع دو پارامتر فرضی با نام‌های parameter1

     و parameter2

     تعریف کرده‌ایم. اما تعداد این پارامتر‌ها هیچ محدودیتی ندارد. هر تعداد متغیری که درون پرانتز‌ها تعریف کنیم برای وارد کردن داده به تابع استفاده می‌شوند. وجود این متغیر‌ها اختیاری است.

  • return

     : کلمه کلیدی است که می‌توان برای خروج از تابع، حتی قبل از رسیدن به انتهای آن مورد استفاده قرار داد. البته که وجود این کلمه کلیدی نیز در تابع اختیاری است.

  • return_value

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

چگونه در کار با زبان برنامه نویسی پایتون پیشرفت کنیم؟

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

پس بهترین گزینه ممکن استفاده از فیلم‌های آموزشی است. این فیلم‌های آموزشی محدودیت زمانی و مکانی ندارند. قابل بازبینی مجدد به‌ صورت بی‌شمار دفعه هستند و در عین حال از قوای یادگیری دیداری و شنیداری دانشجویان نیز کار می‌کشند. سایت آموزشی فرادرس یکی از بهترین تولید کننده‌های فیلم‌های اموزشی به زبان فارسی است. کیفیت آموزش‌های بالا در کنار طبقه‌بندی آموزش‌ها به سطوح علمی متفاوت هم گزینه دیگری است که باعث برجسته شدن فرادرس در بین همه دانشجویان شده است.

مجموعه آموزشی برنامه نویسی پایتون

در این بخش چند مورد از فیلم‌های آموزشی متناسب با سطح این مطلب را معرفی کرده‌ایم. در صورتی که تمایل به دیدن فیلم‌های بیشتر دارید می‌توانید بر روی تصویر بالا کلیک کرده یا مستقیما به وب‌سایت فرادرس مراجعه کنید.

چه زمانی از عبارت return در پایتون استفاده کنیم؟‌

عبارت return

برای برگرداندن نتیجه محاسبات یا فراخوانی داده‌های خاصی استفاده می‌شود. استفاده دیگری که از عبارت return

می‌شود خروج از تابع همزمان با رویدادن شرایط خاصی است. هر سه مورد ذکر شده را در ادامه بررسی کرده‌ایم.

برگرداندن نتایج

وقتی که بخواهیم داده‌های خاصی را از تابع به مرجع فراخوانی تابع برگردانیم استفاده از عبارت return

ضروری می‌شود. در کد پایین تابعی را تعریف کرده‌ایم و سپس در ادامه کد این تابع را برای محاسبه مساحت فراخوانی کردیم.

1def calculate_area(length, width):
2	area = length * width
3	return area
4
5area = calculate_area(50, 50) # get the result of the function
6print(f"Calculated area: {area}") # use the result of the function

فراخوانی کردن داده

وقتی که داد‌ه‌هایی را از پایگاه داده یا API واکشی می‌کنیم، عبارت return

می‌تواند داده‌های واکشی شده را به فرایندی که تابع را فراخوانی کرده تحویل بدهد. کدنویسی به این صورت باعث می‌شود که کدها با قابلیت استفاده مجدد و ماژولار شوند. این کدها خوانایی بیشتری نیز دارند.

در کدهای پایین مثال ساده‌ای درباره استفاده از عبارت return

برای فراخوانی داده از طریق پایگاه داده پیاده‌سازی کرده‌ایم.

1def get_user_email(user_id):
2	user_email = database.query("SELECT email FROM users WHERE id = ?", user_id)
3	return user_email

خروج از توابع بر اساس شرایط تعیین شده

عبارت return

به خروج زودهنگام از توابع نیز کمک می‌کند. با استفاده از این عبارت می‌توان شرایط خاصی تعریف کرد که در صورت رخدادن آن‌ها قبل از اینکه کدهای تابع تا به انتها توسط مفسر برنامه‌نویسی دیده و اجرا شوند از تابع خارج شویم. این امکان باعث ارتقای کارایی برنامه و کاهش احتمال وقوع خطا می‌شود.

در کد پایین، تابعی را برای نمایش این مطلب، پیاده‌سازی کرده‌ایم. در این مثال، با استفاده از عبارت شرطی if-elif

 شرایط مختلفی برای تابع، تعریف شده که در صورت بروز هر کدام تابع بلافاصله ادامه اجرا را متوقف کرده و مقدار False

 برمی‌گرداند. همان‌طور که می‌بینید برای این تابع چهار بار عبارت return

تعریف شده است.

1def validate_age(age):
2	# validate that age is a number or converts to a number
3	if not isinstance(age, (int, float)) or age != int(age):
4		return False
5	elif age < 0:
6		return False
7  elif age > 120:
8	  return False
9  return True # if none of the conditions trigger, return True

مثال های از عبارت return در پایتون

استفاده از عبارت return

در توابع پایتون، امری بسیار رایج است. در این بخش به بررسی مثال‌هایی درباره استفاده از این عبارت پرداخته‌ایم.

محاسبه هزینه ها در تجارت الکترونیک | E-Commerce

برای محاسبه مجموع قیمت کالاهای موجود در یک سبد خرید دیجیتال، پلتفرم‌های تجارت الکترونیک ممکن است از تابعی همراه با عبارت return

به صورت زیر استفاده کنند.

1def calculate_total_price(product_prices, tax_rate, discount):
2	subtotal = sum(product_prices)
3	tax_amount = subtotal * tax_rate
4	discount_amount = subtotal * discount
5	total_price = subtotal + tax_amount - discount_amount
6	return total_price

طبیعتا فرمول محاسبه قیمت می‌تواند متفاوت باشد اما قاعده کلی استفاده از عبارت return

ثابت است.

یک مانیتور که در حال نمایش ادیتور کدنویسی است. و یک لپتاپ کوچک در کنارش قرار دارد

احراز هویت کاربر

اپلیکیشنی که هویت کاربران را با استفاده از تابع خاصی احراز می‌کند نیز می‌تواند از عبارت return

برای برگرداندن نتیجه در خروجی کمک بگیرد.

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

نیز نوشت. به عنوان تمرین می‌توانید به بازسازی این تابع بپردازید.

1def authenticate_user(username, password):
2	# Assuming there's a database of users with encrypted passwords
3	user = get_user_from_database(username)
4	if user and check_password_encryption(password, user.encrypted_password):
5        return True  # Authentication successful
6    else:
7        return False  # Authentication failed

علم داده

علم داده اغلب شامل استخراج اطلاعات معنادار از داده‌های خام است. داده‌هایی مانند اندازه‌گیری‌های آماری یکی از مواد خام مورد استفاه علم داده هستند. به عنوان مثال، تابعی را در نظر بگیرید که مجموعه داده‌ای را مورد پردازش قرار می‌دهد. این تابع باید میزان میانگین mean

 ، میانه median

 و انحراف معیار std_dev

 را به فرایندی که تابع را فراخوانی کرده برگرداند.

در کد پایین این تابع را شبیه‌سازی کردیم. توجه کنید که در مقابل عبارت return

سه مقدار به صورت همزمان کنار هم قرار داده شده‌اند.

1def analyze_data(data):
2	mean = calculate_mean(data)
3	median = calculate_median(data)
4	std_dev = calculate_standard_deviation(data)
5	return mean, median, std_dev  # Returning multiple insights as a tuple

در صورتی که نسبت به علم داده یا Data Science کنجکاو هستید و می خواهید که درباره این شاخه تخصصی در برنامه‌نویسی و مسیر تسلط بر آن و بازار کارش اطلاعات بیشتری کسب کنید، پیشنهاد می‌کنیم که فیلم آموزشی رایگان آموزش مسیر تبدیل شدن به دانشمند علم داده را در فرادرس با دقت تماشا کنید.

مدیریت پاسخ در API

در حوزه توسعه نرم‌افزار، نرم‌افزارها اغلب با API-های خارجی تعامل می‌کنند. تابعی که در ادامه آمده روش مدیریت و انتقال پاسخ‌های API-ها را توسط عبارت return

نمایش می‌دهد. این کد تقریبا ترکیبی از کدهای بالا است و توانایی عملیاتی عبارت return

را نمایش می‌دهد.

1import requests
2
3def fetch_api_data(URL):
4	response = requests.get(url)
5	if response.status_code == 200:
6		return True, response.json()  # Success, returning status and data
7	else:
8		return False, None  # Failure, indicating an issue with the request

بررسی مطالب بیشتر درباره عبارت return در پایتون

در این بخش چند مورد از توانایی‌های خاص عملیاتی عبارت return

را بررسی خواهیم کرد. این توانایی‌های عبارت return

باعث افزایش قدرت و کیفیت کدنویسی توابع در پایتون شده‌اند.

برگرداندن مقدار None

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

 برمی‌گردانند. به مثال پایین توجه کنید. البته که با کد return None

 یا حتی کد return

بدون هیچ متغیری نیز می‌توان این مثال را نوشت. اما به انتهای همه توابعی که عبارت return

ندارند این تکه کد به‌طور پیش‌فرض اضافه و مقدار None

برگشت داده می‌شود.

1def log_message(message):
2    print(message)
3    # No return statement needed; function returns None by default

خروج زودهنگام از تابع

وقتی که شرایط خاصی در تابع به مقادیر True

 یا False

منتهی می‌شوند، در صورت نیاز می‌توانیم با استفاده از عبارت return

حتی پیش از پردازش کل کدهای تابع از آن خارج شویم. گاهی اوقات خروج زودهنگام از تابع می‌تواند اثرگذاری و خوانایی کد را نیز افزایش دهد.

1def log_message(message, log_level):
2    if log_level not in ["INFO", "WARNING", "ERROR"]:
3        return  # Early exit if log_level is invalid, implicitly returns None
4    # Proceed with logging the message if log_level is valid
5    print(f"[{log_level}]: {message}")
6
7# Example usage
8log_message("This is a test message.", "DEBUG")  # Does nothing and returns None

در کد بالا می‌بینید که عبارت return

بدون هیچ پارامتری استفاده شده‌ است. این عبارت فقط برای به پایان رساندن تابع به کد اضافه شده و به صورت پیش‌فرض مقدار None

برمی‌گرداند.

یک مهندس با هدفون بر سر پشت به تصویر رو به مانیتور نشسته و کد نویسی می‌کند

برگرداندن چندین مقدار به طور هم زمان

توابع پایتون با بسته‌بندی مقادیر مختلف در تاپل، لیست یا دیکشنری می‌توانند به صورت هم‌زمان چندین مقدار متفاوت را به مرجع فراخوانی خود برگردانند. بعضی از توابع باید وظایفی مرتبط با هم انجام دهند و نتایجی بیش از یک مقدار برگردانند. این ویژگی به‌طرز باورنکردنی برای چنین توابعی مفید است. مرجع فراخوانی این نوع از تابع‌ها نیز به‌سادگی می‌تواند بسته‌های ذخیره داده را باز کند و از داده‌ها استفاده ببرد.

برای اینکه با انواع ساختار‌های ذخیره داده در پایتون مانند موارد نام‌برده شده در بالا آشنا شوید می‌توانید به مطلب انواع داده در پایتون به زبان ساده در مجله فرادرس رجوع کنید. این مطلب یک دید کلی با اطلاعات کامل درباره هر کدام از ساختار‌های داده استفاده شده در پایتون را در اختیار شما قرار می‌دهد.

در کد پایین با اینکه مقادیر برگشتی در مقابل عبارت return

فقط با کاما از یکدیگر جدا شده‌اند. اما در خروجی به صورت تاپل برگردانده می‌شوند.

1def get_user_info(user_id):
2    # Assuming a database query here to fetch user details
3    user_name = "John Doe"
4    user_email = "[email protected]"
5    # Returning multiple values as a tuple
6    return user_name, user_email
7
8# Unpacking the returned tuple into separate variables
9name, email = get_user_info(1)

برگرداندن توابع

پایتون از توابع مرتبه بالا نیز پشتیبانی می‌کند. پشتیبانی از توابع مرتبه بالاتر به این معنی است که می‌توانیم از درون تابعی، تابع دیگری را برگردانیم. بنابراین نیازی نیست که در مقابل عبارت return

حتما مقدار مشخصی را قرار بدهیم. این ویژگی به‌طور خاص در الگوهای پیشرفته برنامه‌نویسی مانند دکوریتورها و فکتوری‌ها در پایتون سودمند است.

در کد پیاده‌سازی شده پایین دو تابع را درون یکدیگر پیاده‌سازی کرده‌ایم.

1def outer_function():
2    def inner_function():
3        return "Hello from the inner function!"
4    return inner_function  # Returns a function

عبارت return در پایتون همراه با بلاک finally

وقتی که عبارت return

درون بلاک try-except اجرا شود، کد بلاک finally

 اول از همه قبل از برگرداندن مقدار به مرجع فراخوانی تابع اجرا می‌شود. توجه کنید که عبارت finally

جزیی از بلاک try-except

است. اگر این بخش در کد وجود داشت و کد در طول اجرا به عبارت return

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

می‌تواند قبل از خروج از تابع اجرا شود.

یک مانیتور بزرگ بر روی میز در حال نمایش ادیتور کد نویسی است . مانیتور کوچک در کنارش تصویری از کوهستان را نشان می‌دهد.

در کد زیر دو تابع جداگانه نوشته‌ایم که در هر دو تابع از بلاک try-except

همراه با بخش finally

استفاده کرده‌ایم.

1def hello():
2    try:
3        return 'hello try'
4    finally:
5        print('finally block')
6  
7  
8def hello_new():
9    try:
10        raise TypeError
11    except TypeError as te:
12        return 'hello except'
13    finally:
14        print('finally block')
15  
16  
17print(hello())
18print(hello_new())

خروجی کد بالا به صورت زیر است.

finally block
hello try
finally block
hello except

نکته: اگر بلاک مربوط به finally

خود دارای عبارت return

باشد، عبارت return

که قبلا کد به آن برخورد کرده نادیده گرفته خواهد شد و مقداری که در بلاک finally

در مقابل عبارت return

تعبیه شده به خارج از تابع برگردانده خواهد شد.

در کد زیر نمونه این حالت استثنایی را پیاده‌سازی کرده‌ایم.

1def hello():
2    try:
3        return 'hello try'
4    finally:
5        print('finally block')
6        return 'hello from finally'
7  
8  
9print(hello())

خروجی کد بالا به صورت زیر است.

finally block
hello from finally

یادگیری پایتون همراه با اجرای پروژه های کاربردی

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

مجموعه اموزشی پروژه محور برنامه نویسی

برای دیدن فیلم‌های آموزشی بیشتر فرادرس به صورت پروژه‌محور، چه در زبان برنامه‌نویسی پایتون و چه در سایر زبان‌های برنامه‌نویسی، می‌توانید روی عکس بالا کلیک کنید و به طور مستقیم به صفحه مجموعه آموزش‌های پروژه‌محور برنامه‌نویسی فرادرس منتقل شوید.

جمع بندی

مقدار return

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

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

ندارد یا تابعی که در مقابل عبارت return

آن هیچ مقداری قرار نگرفته، به صورت پیش‌فرض، مقدار None

برمی‌گرداند.

قطعا که عبارت return

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

مهمترین بخش در ایجاد توابع است. زیرا این عبارت تابع را کامل می‌کند و خوانایی تابع را افزایش می‌دهد. در این مطلب از مجله فرادرس، با عبارت return

و انواع کاربرد‌ها و روش‌های استفاده از آن آشنا شدیم. نسبت به مزیت‌هایی که این عبارت برای برنامه‌نویسی فراهم می‌کند شناخت پیدا کردیم و یاد گرفتیم که چگونه به بهترین روش ممکن با کمک عبارت return

خوانایی و بهره‌وری کد خود را افزایش دهیم. پس از این به بعد وقتی که در حال تعریف تابع بودید، به‌جای استفاده از دستور print()

سعی کنید از return

استفاده کنید.

source

توسط expressjs.ir