🐍 آموزش جامع توابع در پایتون

همراه با مثال‌های عملی و نکات کلیدی برای برنامه‌نویسی حرفه‌ای

📅 اردیبهشت ۱۴۰۵ | آکادمی پایتون غیاثی

🎯 نکات مهم قبل از شروع

📌 هدف‌گذاری، نحوه دیدن فیلم، نحوه تمرین کردن، تصویر ذهنی، میزان تمرین در روز، گول زدن ذهن

در مسیر یادگیری برنامه‌نویسی، فقط دیدن فیلم کافی نیست. باید هر روز تمرین کنید، تصویر ذهنی از کدنویسی بسازید و ذهن خود را برای حل مسئله تربیت کنید.

🛠️ انواع محیط کدنویسی

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

💡 پیشنهاد من: با VS Code شروع کنید، بعداً اگر به سمت داده کاوی رفتید از Anaconda استفاده کنید.

📚 آشنایی با تابع (Function) در پایتون

برای تعریف تابع از کلمه کلیدی def استفاده می‌کنیم. ساختار کلی تابع به این صورت است:

🐍 کد: تعریف تابع
def python():
    print("python is the very best")

python()

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

🐍 کد: صدا زدن چندباره تابع
def python():
    print("python is the very best")

python()
python()
python()

📥 چگونه با تابع ورودی بگیریم؟

با استفاده از پارامترها می‌توانیم به تابع ورودی بدهیم. مثال:

🐍 کد: تابع با پارامتر و f-string
def python(a):
    print(f"{a} is the best")

python("palangi")
💡 f-string به ما اجازه می‌دهد متغیرها را داخل متن قرار دهیم. خیلی کارآمد و خواناست!

📝 Docstring (مستندسازی تابع)

Docstring برای توضیح کارکرد تابع استفاده می‌شود. برخلاف کامنت (#)، این توضیحات به کاربر نیز نمایش داده می‌شود.

🐍 کد: استفاده از Docstring
def python(a):
    """in tabe be shoma salam mikonad"""
    print(f"hi {a}")

python("palangi")

🔄 تفاوت print و return

🐍 کد: return بدون نمایش
def hello():
    return "hi"

result = hello()
print(result)   # حالا نمایش داده می‌شود

🎯 ارگومان‌های مهم تابع

انواع ارگومان: ضروری، کلمه کلیدی، پیش‌فرض، دلخواه

ارگومان ضروری (Positional)

🐍 کد: ارگومان ضروری با کلمه کلیدی
def main(name, age, lang):
    print(f"hello {name}")
    print(f"you are {age}")
    print(f"and i know {lang}")

main(name="yasin", age=21, lang="english")
⚠️ اگر ترتیب را رعایت نکنید (مثلاً main(21,'yasin','english'))، پایتون جایگاه متغیرها را اشتباه می‌گیرد. پس مراقب باشید!

ارگومان پیش‌فرض (Default)

نکته مهم: متغیرهایی که مقدار پیش‌فرض می‌گیرند باید آخر لیست پارامترها نوشته شوند.

🐍 کد: ارگومان پیش‌فرض
def main(name, lang, age=21):
    print(f"hello {name}")
    print(f"you are {age}")
    print(f"and i know {lang}")

main("yasin", "english")

🧩 ارگومان دلخواه: *args و **kwargs

*args مقادیر اضافی را به صورت تاپل (tuple) ذخیره می‌کند. تاپل غیرقابل تغییر است: (434,43,3,5,321)

**kwargs مقادیر کلید-مقداری را به صورت دیکشنری (dictionary) ذخیره می‌کند: {'age':3, 'name':'yas'}

🐍 کد: ترکیب *args و **kwargs
def main(*args, **kwargs):
    print(args)
    print(kwargs)

main(10, 15, 20, 25, 30, name="yasin", age=21)
با حلقه می‌توانید اعضای args و kwargs را جداگانه بررسی کنید.

🌐 متغیر محلی (Local) و جهانی (Global)

🐍 کد: متغیر جهانی
a = 30

def main():
    print(a)

main()
🐍 کد: متغیر محلی (لوکال)
def main():
    a = 30
    print(a)

main()
برای پروژه‌های پیشرفته و محاسبات سنگین، استفاده از متغیرهای جهانی سرعت پردازش را بالا می‌برد.

🔄 توابع بازگشتی (Recursive Functions)

توابعی که داخل خودشان، خودشان را صدا می‌زنند. مصرف حافظه بالایی دارند ولی برای برخی مسائل (مثل فاکتوریل) بسیار مناسبند.

🐍 کد: چاپ اعداد با بازگشت
def main(num):
    if num > 0:
        print(num)
        main(num - 1)

main(10)
🐍 کد: محاسبه فاکتوریل
def fact(num):
    if num == 1:
        return 1
    else:
        return num * fact(num - 1)

print(fact(5))   # خروجی: 120

⚡ توابع lambda – توابع تک‌خطی

با استفاده از lambda می‌توان توابع کوچک و بی‌نام در یک خط نوشت.

🐍 کد: تابع معمولی
def main(a, b):
    return a + b

print(main(10, 10))
🐍 کد: تابع lambda
main = lambda a, b: a + b
print(main(10, 10))
✨ همانطور که می‌بینید، lambda خیلی کوتاه‌تر و برای عملیات ساده عالی است.

📌 جمع‌بندی نهایی

با تمرین روزانه و حل مسئله، توابع را در پروژه‌های واقعی به کار بگیرید. موفق باشید! 🚀
✅ کپی شد!