🧩 درس چهارم: توابع در پایتون
🎯 هدف این درس: آشنایی با توابع، نحوه تعریف، فراخوانی و استفاده از آنها در پایتون
قسمت 1: تابع چیست و چرا به آن نیاز داریم؟
در برنامهنویسی، گاهی نیاز داریم یک کار را چندین بار در بخشهای مختلف برنامه انجام دهیم. به جای تکرار کد، میتوانیم آن را در یک تابع قرار دهیم و هرجا که نیاز بود، آن را فراخوانی کنیم.
💡 مثال در زندگی واقعی:
• یک دستور پخت غذا (تابع) را یک بار یاد میگیریم و هر بار که میخواهیم غذا بپزیم، آن را اجرا میکنیم.
• یک فرمول ریاضی را یک بار مینویسیم و هر بار که نیاز به محاسبه داریم، از آن استفاده میکنیم.
مزایای استفاده از توابع:
- ✅ کاهش تکرار کد (DRY – Don’t Repeat Yourself)
- ✅ خوانایی بیشتر کد
- ✅ تست و خطایابی آسانتر
- ✅ قابلیت استفاده مجدد در پروژههای مختلف
قسمت 2: تعریف و فراخوانی تابع
در پایتون برای تعریف تابع از کلمه کلیدی def استفاده میکنیم.
ساختار کلی:
def نام_تابع(پارامترها):
# بدنه تابع
return نتیجه
مثال: تابع ساده بدون پارامتر
# تعریف تابع
def say_hello():
print("سلام دنیا!")
print("به رجستری آکادمی خوش آمدید!")
# فراخوانی تابع
say_hello()
💡 نکته: برای اجرای تابع، باید آن را فراخوانی کنید. فقط تعریف کردن تابع، آن را اجرا نمیکند.
قسمت 3: توابع با پارامتر
پارامترها به تابع اجازه میدهند با دادههای مختلف کار کند.
مثال 1: تابع با یک پارامتر
# تعریف تابع با پارامتر
def greet(name):
print(f"سلام {name} عزیز!")
print("خوش آمدید!")
# فراخوانی با مقادیر مختلف
greet("یونس")
greet("علی")
مثال 2: تابع با چند پارامتر
# تعریف تابع با دو پارامتر
def introduce(name, age):
print(f"نام: {name}")
print(f"سن: {age} سال")
print("-" * 20)
# فراخوانی تابع
introduce("یونس", 28)
introduce("مریم", 25)
قسمت 4: توابع با مقدار بازگشتی (return)
بعضی توابع یک مقدار را به عنوان نتیجه برمیگردانند تا بتوانیم از آن در جاهای دیگر استفاده کنیم.
# تعریف تابع با مقدار بازگشتی
def add(a, b):
result = a + b
return result
# استفاده از مقدار بازگشتی
sum1 = add(5, 3)
sum2 = add(10, 20)
print(f"جمع اول: {sum1}")
print(f"جمع دوم: {sum2}")
print(f"جمع کل: {add(sum1, sum2)}")
💡 نکته: اگر تابع return نداشته باشد، مقدار None را برمیگرداند.
قسمت 5: پارامترهای پیشفرض
در پایتون میتوانیم برای پارامترها مقدار پیشفرض تعیین کنیم. در صورتی که کاربر مقداری ارسال نکند، از مقدار پیشفرض استفاده میشود.
# تعریف تابع با پارامترهای پیشفرض
def introduce(name, age=18, city="تهران"):
print(f"نام: {name}")
print(f"سن: {age} سال")
print(f"شهر: {city}")
print("-" * 20)
# فراخوانی با پارامترهای مختلف
introduce("یونس", 28, "اصفهان")
introduce("علی") # استفاده از مقادیر پیشفرض
introduce("مریم", 25) # استفاده از شهر پیشفرض
قسمت 6: توابع با تعداد پارامتر متغیر
گاهی نمیدانیم کاربر چند پارامتر به تابع ارسال میکند. برای این کار از *args و **kwargs استفاده میکنیم.
1️⃣ استفاده از *args (برای آرگومانهای موقعیتی)
# تعریف تابع با *args
def sum_all(*numbers):
total = 0
for num in numbers:
total += num
return total
# فراخوانی با تعداد مختلف پارامتر
print(f"جمع: {sum_all(1, 2, 3)}")
print(f"جمع: {sum_all(10, 20, 30, 40)}")
print(f"جمع: {sum_all(5)}")
2️⃣ استفاده از **kwargs (برای آرگومانهای نامدار)
# تعریف تابع با **kwargs
def print_info(**info):
for key, value in info.items():
print(f"{key}: {value}")
# فراخوانی با پارامترهای نامدار
print_info(name="یونس", age=28, city="اصفهان")
print("-" * 20)
print_info(first_name="علی", last_name="محمدی", job="برنامهنویس")
قسمت 7: توابع داخلی (Built-in Functions)
پایتون توابع زیادی دارد که بدون نیاز به تعریف، در دسترس هستند.
# نمونههایی از توابع داخلی
# 1. تابع print
print("سلام دنیا!")
# 2. تابع len
name = "یونس رجستری"
print(f"طول نام: {len(name)} کاراکتر")
# 3. تابع type
print(f"نوع داده: {type(10)}")
print(f"نوع داده: {type("سلام")}")
# 4. تابع input
# age = int(input("سن خود را وارد کنید: "))
# 5. تابع max و min
numbers = [12, 45, 7, 89, 23]
print(f"بزرگترین عدد: {max(numbers)}")
print(f"کوچکترین عدد: {min(numbers)}")
# 6. تابع sum
print(f"جمع اعداد: {sum(numbers)}")
قسمت 8: پروژه عملی – ماشین حساب
📝 پروژه: ساخت ماشین حساب با توابع
یک ماشین حساب ساده بسازید که چهار عمل اصلی (جمع، تفریق، ضرب، تقسیم) را با استفاده از توابع انجام دهد.
🔍 راهحل پروژه:
# تعریف توابع برای چهار عمل اصلی
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
return "خطا: تقسیم بر صفر امکانپذیر نیست!"
return a / b
# تابع اصلی ماشین حساب
def calculator():
print("=" * 40)
print("🧮 ماشین حساب")
print("=" * 40)
while True:
print("\nعملیاتهای موجود:")
print("1. جمع (+)")
print("2. تفریق (-)")
print("3. ضرب (*)")
print("4. تقسیم (/)")
print("5. خروج")
choice = input("\nانتخاب خود را وارد کنید (1-5): ")
if choice == "5":
print("🙏 خداحافظ!")
break
if choice not in ["1", "2", "3", "4"]:
print("❌ انتخاب نامعتبر!")
continue
try:
num1 = float(input("عدد اول را وارد کنید: "))
num2 = float(input("عدد دوم را وارد کنید: "))
except ValueError:
print("❌ لطفاً عدد معتبر وارد کنید!")
continue
# انجام عملیات با توابع
if choice == "1":
result = add(num1, num2)
operation = "+"
elif choice == "2":
result = subtract(num1, num2)
operation = "-"
elif choice == "3":
result = multiply(num1, num2)
operation = "*"
elif choice == "4":
result = divide(num1, num2)
operation = "/"
print(f"\n✅ {num1} {operation} {num2} = {result}")
print("-" * 40)
# اجرای ماشین حساب
if __name__ == "__main__":
calculator()
قسمت 9: تمرین عملی
📝 تمرین شماره 1
تابعی بنویسید که یک عدد را دریافت کرده و تشخیص دهد که آیا عدد اول است یا خیر.
🔍 راهحل تمرین:
def is_prime(num):
"""
تابع تشخیص عدد اول
"""
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
# تست تابع
test_numbers = [2, 3, 4, 7, 10, 13, 17, 20, 23]
for n in test_numbers:
if is_prime(n):
print(f"✅ {n} عدد اول است.")
else:
print(f"❌ {n} عدد اول نیست.")
📝 تمرین شماره 2
تابعی بنویسید که یک لیست از اعداد را دریافت کرده و بزرگترین، کوچکترین و میانگین آنها را محاسبه کند.
🔍 راهحل تمرین:
def analyze_numbers(numbers):
"""
تابع تحلیل اعداد
"""
if not numbers:
return None, None, None
total = sum(numbers)
count = len(numbers)
average = total / count
return max(numbers), min(numbers), average
# تست تابع
test_list = [12, 45, 7, 89, 23, 56, 34, 78]
maximum, minimum, avg = analyze_numbers(test_list)
print("📊 تحلیل اعداد")
print("=" * 30)
print(f"لیست: {test_list}")
print(f"بزرگترین عدد: {maximum}")
print(f"کوچکترین عدد: {minimum}")
print(f"میانگین: {avg:.2f}")
📚 جمعبندی درس
در این درس یاد گرفتیم:
- ✅ مفهوم تابع و مزایای استفاده از آن
- ✅ نحوه تعریف و فراخوانی توابع
- ✅ استفاده از پارامترها و مقدار بازگشتی
- ✅ پارامترهای پیشفرض و متغیر
- ✅ توابع داخلی پایتون
- ✅ پروژههای عملی: ماشین حساب، تشخیص عدد اول و تحلیل اعداد
🎯 درس بعدی: پروژه نهایی – ساخت یک برنامه کامل
💡 برای مشاهده دورههای بیشتر، به صفحه دورهها مراجعه کنید.



