Kahibaro
Discord Login Register

تعریف توابع

ساختار کلی تعریف تابع در پایتون

در این بخش تمرکز ما روی «نحوهٔ نوشتن» توابع است، نه این‌که چرا لازم‌اند یا چطور دوباره استفاده می‌شوند (این‌ها در بخش‌های دیگر فصل توضیح داده می‌شوند).

ساختار کلی یک تابع در پایتون این‌گونه است:

def نام_تابع(لیست_پارامترها):
    دستور_۱
    دستور_۲
    ...

نکته‌های مهم در این ساختار:

یک تابع ساده بدون پارامتر

ساده‌ترین نوع تابع، تابعی است که ورودی نمی‌گیرد:

def salam():
    print("سلام! به دنیای پایتون خوش آمدی.")
# فراخوانی تابع
salam()

نکات:

نام‌گذاری توابع

چند قانون و توصیهٔ مهم برای نام‌گذاری:

قوانین (الزامی):

توصیه‌ها (برای کد خوانا):

چند مثال:

def print_menu():
    print("1. جمع")
    print("2. تفریق")
def get_age():
    print("لطفاً سن خود را وارد کنید:")

بدنهٔ تابع و تورفتگی (Indentation)

هر چیزی که داخل تابع است، باید زیر تعریف تابع تو رفته باشد. این تو رفتگی است که محدودهٔ تابع را مشخص می‌کند، نه {} مثل بعضی زبان‌های دیگر.

مثال درست:

def show_message():
    print("سلام")
    print("این یک پیام است")

مثال نادرست (بدون تو رفتگی):

def show_message():
print("سلام")
print("این یک پیام است")

کد بالا خطای IndentationError می‌دهد، چون پایتون انتظار دارد کدهای داخل تابع با فاصله شروع شوند.

نکات عملی:

تابعی که فقط کاری انجام می‌دهد (بدون مقدار بازگشتی)

بعضی توابع فقط کاری را انجام می‌دهند (مثلاً چاپ متن) و مقدار خاصی برنمی‌گردانند. این نوع توابع را گاهی «رویه» (procedure) می‌نامند.

مثال:

def print_welcome_message():
    print("************************")
    print("   برنامه مدیریت کارها  ")
    print("************************")
print_welcome_message()

این تابع:

تابع خالی (استفاده از `pass`)

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

def todo_list():
    # بعداً منطق برنامه اینجا نوشته می‌شود
    pass

pass یعنی: «اینجا عمداً هیچ کاری نکن».

این روش زمانی مفید است که دارید اسکلت کلی برنامه را طراحی می‌کنید و بعداً جزئیات را پر می‌کنید.

داک‌استرینگ (توضیح تابع)

برای تابع می‌توانید در خط اول بدنهٔ آن، یک رشتهٔ چندخطی بنویسید تا توضیح دهد که این تابع چه کار می‌کند. به این توضیح، docstring گفته می‌شود.

def greet():
    """این تابع یک پیام خوشامد چاپ می‌کند."""
    print("سلام! خوش آمدی :)")
greet()

نکات:

مثال کمی مفصل‌تر:

def print_user_info():
    """
    اطلاعات کاربر را روی صفحه چاپ می‌کند.
    فعلاً فقط یک متن نمونه نمایش داده می‌شود.
    """
    print("نام: کاربر نمونه")
    print("سن: 20")

تعریف تابع و فراخوانی در جاهای مختلف فایل

معمولاً توابع را در ابتدای فایل (بعد از ایمپورت‌ها) تعریف می‌کنند و بعد در ادامهٔ برنامه آن‌ها را فراخوانی می‌کنند.

الگوی رایج:

def show_header():
    print("==== برنامه نمونه ====")
def main():
    show_header()
    print("اینجا بقیهٔ منطق برنامه قرار می‌گیرد.")
# شروع اجرای برنامه
main()

چیزهایی که در این مرحله لازم است بدانید:

اشتباهات رایج در تعریف تابع

در این بخش فقط اشتباه‌های مربوط به «تعریف تابع» را می‌بینیم (نه منطق داخلی تابع):

۱. فراموش کردن `:`

def say_hello()   # نادرست
    print("سلام")

باید این‌طور باشد:

def say_hello():
    print("سلام")

۲. ننوشتن پرانتزها

def say_hello:    # نادرست
    print("سلام")

باید حتماً () وجود داشته باشد، حتی اگر پارامتری نیست:

def say_hello():
    print("سلام")

۳. فضای خالی اشتباه قبل از `def`

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

مثال نادرست:

 if True:
def f():
    print("سلام")

۴. استفاده از نام نامعتبر

def 2print():   # نادرست - شروع با عدد
    print("عدد")
def print message():  # نادرست - وجود فاصله
    print("پیام")

نسخهٔ درست:

def print2():
    print("عدد")
def print_message():
    print("پیام")

چند تمرین پیشنهادی

برای تمرین تعریف تابع (بدون درگیر شدن با پارامتر و مقدار بازگشتی)، می‌توانید این کارها را انجام دهید:

  1. تابعی بنویسید به نام print_line که یک خط شامل ---------- چاپ کند و آن را چند بار در برنامه صدا بزنید.
  2. تابعی بنویسید به نام show_menu که منوی یک برنامهٔ خیالی را چاپ کند (مثلاً «۱. افزودن»، «۲. حذف»، «۳. خروج») و بعد آن را فراخوانی کنید.
  3. تابعی بنویسید به نام about_me که دو سه خط دربارهٔ شما (نام، شهر و یک علاقهٔ شخصی) چاپ کند.

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

Views: 5

Comments

Please login to add a comment.

Don't have an account? Register now!