🧩 توابع

return یا print؟

۴ گام

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

print مثل این است که جواب را بلند بگویی: همه می‌شنوند ولی کسی یادداشت نمی‌کند. return مثل این است که جواب را روی کاغذ بنویسی و دست صداکننده بدهی: می‌تواند در متغیر نگهش دارد و با آن حساب کند.

def sum_3num(a, b, c):
    return a + b + c

x = sum_3num(1, 2, 3)
print(x * 10)     # 60 : با نتیجه کار می‌کنیم

دو نکتهٔ گام ۳ و ۴:

  • تابعی که هیچ returnی ندارد، خودکار None برمی‌گرداند. این باگِ بی‌صدای رایجی است: جواب محاسبه می‌شود ولی برگردانده نمی‌شود.
  • با return می‌شود چند مقدار برگرداند: return smallest, largest یک تاپل می‌سازد و lo, hi = min_max(...) آن را در دو متغیر باز می‌کند.

قاعدهٔ کلی: توابع محاسباتی باید return کنند و چاپ را به کد صداکننده بسپارند. درس کامل return و print را هم ببین.

  1. ۱گام ۱

    تابعی به اسم sum_3num بنویس که سه پارامتر a و b و c می‌گیرد و جمعشان را با return برمی‌گرداند.

    دقت کن: داخل تابع هیچ printی ننویس؛ فقط return کن. و هنوز تابع را صدا نزن.

  2. ۲گام ۲

    حالا قدرت return را ببین: نتیجهٔ تابع را در متغیر x بریز (x = sum_3num(1, 2, 3)) و بعد x * 10 را چاپ کن.

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

  3. ۳گام ۳

    حالا تجربه کن که اگر به‌جای return از print استفاده کنی چه می‌شود. یک تابع دوم به اسم sum_3num_print بنویس که فقط جمع را چاپ می‌کند (بدون return).

    بعد آن را صدا بزن: x2 = sum_3num_print(1, 2, 3) و در خط بعد x2 را چاپ کن.

    خروجی سه خط می‌شود: 60 (از کد قبلی)، بعد 6 (چاپ داخل تابع هنگام صدا زدن) و بعد None!

  4. ۴گام ۴

    گام آخر: با return می‌شود چند مقدار هم برگرداند؛ کافی است با ویرگول جدا کنی و پایتون آن‌ها را در یک تاپل می‌گذارد.

    تابع min_max(a, b, c) بنویس که کوچک‌ترین و بزرگ‌ترین را برگرداند (تابع‌های آمادهٔ min و max به کارت می‌آیند). بعد با یک خط هر دو را در دو متغیر باز کن: lo, hi = min_max(7, 2, 9) و در آخر print(lo, hi) چاپ کن: 2 9.

در حال آماده‌سازی ویرایشگر…