🧩 توابع

تابع بساز: def و return

۴ گام

یک بار تعریف کن، هر چند بار صداش بزن

تابع تکه‌ای کد است که اسم دارد، ورودی می‌گیرد، کاری انجام می‌دهد و (معمولاً) خروجی برمی‌گرداند:

def bigger(a, b):
    """دو عدد می‌گیرد و بزرگ‌ترشان را برمی‌گرداند."""
    if a > b:
        return a
    else:
        return b

result = bigger(12, 90)
print(result)

اجزایش:

  • def یعنی «دارم تعریف می‌کنم»؛ بعدش نام تابع و پارامترها داخل پرانتز، و آخر خط دونقطه.
  • خط‌های بدنه تورفتگی دارند.
  • رشتهٔ """…""" درست زیر خط def همان docstring است: توضیح تابع که پایتون آن را نگه می‌دارد.
  • return مقدار را به صداکنندهٔ تابع تحویل می‌دهد.

دو نکتهٔ مهم:

  • تعریف کردن، اجرا کردن نیست. def فقط به پایتون یاد می‌دهد این تابع چیست؛ کد بدنه فقط وقتی اجرا می‌شود که صدایش بزنی.
  • توابعی مثل is_even که فقط True/False برمی‌گردانند، نیازی به if ندارند: عبارت n % 2 == 0 خودش True یا False است.

چرا تابع؟ درس کامل توابع دو ایدهٔ بزرگ را توضیح می‌دهد: تجزیه (مسئلهٔ بزرگ را به تکه‌های کوچک بشکن) و انتزاع (لازم نیست بدانی تابع داخلش چطور کار می‌کند؛ فقط ورودی و خروجیش مهم است).

  1. ۱گام ۱

    با def تابعی به اسم bigger بنویس که دو پارامتر a و b می‌گیرد و با if و else تصمیم می‌گیرد کدام بزرگ‌تر است و آن را با return برمی‌گرداند.

    فعلاً فقط تعریفش کن؛ هنوز صدایش نزن. خط def bigger(a, b): با دونقطه، و خط‌های بدنه با ۴ فاصله تورفتگی.

  2. ۲گام ۲

    حالا تابع را صدا بزن: نتیجهٔ bigger(12, 90) را در متغیر result بریز و چاپش کن، و در خط بعد نتیجهٔ bigger(7, 3) را هم مستقیم داخل print صدا بزن.

    دو خط خروجی باید چاپ شود: 90 و بعد 7.

    یادت باشد: تعریف کردن تابع آن را اجرا نمی‌کند؛ کد بدنه فقط موقع صدا زدن اجرا می‌شود.

  3. ۳گام ۳

    یک تابع دیگر: is_even(n) که اگر n زوج بود True و در غیر این صورت False برگرداند.

    راهنما: باقیماندهٔ n بر ۲ با عملگر % — اگر صفر بود یعنی زوج است. می‌توانی عبارت n % 2 == 0 را مستقیم return کنی، بدون if!

    یک docstring هم برایش بنویس: رشته‌ای با """ درست زیر خط def که کار تابع را توضیح می‌دهد.

  4. ۴گام ۴

    گام آخر: تابع factorial(k) را بنویس که فاکتوریل k را حساب کند (حاصل‌ضرب ۱ تا k؛ مثلاً 5! = 120).

    این همان الگوی جمع‌زدن است ولی با ضرب؛ پس مقدار اولیه ۱ است (عضو خنثی ضرب)، نه صفر. با حلقهٔ for روی range(2, k + 1) ضرب کن و نتیجه را return کن.

    بعد دو صدا زدن را چاپ کن: factorial(5) و factorial(10). خروجی باید 120 و 3628800 باشد.

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