یک بار تعریف کن، هر چند بار صداش بزن
تابع تکهای کد است که اسم دارد، ورودی میگیرد، کاری انجام میدهد و (معمولاً) خروجی برمیگرداند:
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است.
چرا تابع؟ درس کامل توابع دو ایدهٔ بزرگ را توضیح میدهد: تجزیه (مسئلهٔ بزرگ را به تکههای کوچک بشکن) و انتزاع (لازم نیست بدانی تابع داخلش چطور کار میکند؛ فقط ورودی و خروجیش مهم است).