🧩 توابع (Functions) در پایتون
توابع بلوکهای کد قابل استفاده مجدد هستند که یک کار خاص را انجام میدهند.
با استفاده از توابع، میتوانید کد خود را سازماندهی، ماژولار و قابل فهمتر کنید.
پایتون توابع را با کلمه کلیدی def تعریف میکند.
🔹 تعریف و فراخوانی تابع
# تعریف تابع
def greet():
print("Hello, World!")
# فراخوانی تابع
greet()
greet() # بار دیگر
⏳ برای اجرا دکمه را بزنید...
🔹 پارامترها و آرگومانها
# تابع با پارامتر
def greet(name):
print(f"Hello, {name}!")
# فراخوانی با آرگومان
greet("Saba")
greet("Ali")
⏳ برای اجرا دکمه را بزنید...
🔹 مقدار بازگشتی با return
def add(a, b):
result = a + b
return result
# استفاده از مقدار بازگشتی
sum_result = add(5, 3)
print(f"Sum: {sum_result}")
# تابع با چند return
def check_number(n):
if n % 2 == 0:
return "Even"
return "Odd"
print(check_number(7))
⏳ برای اجرا دکمه را بزنید...
🔹 پارامترهای پیشفرض
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet("Saba") # استفاده از پیشفرض
greet("Ali", "Hi") # جایگزینی مقدار پیشفرض
⏳ برای اجرا دکمه را بزنید...
🔹 آرگومانهای کلیدی (Keyword Arguments)
def introduce(name, age, city):
print(f"{name} is {age} years old and lives in {city}.")
# فراخوانی با آرگومانهای کلیدی
introduce(city="Tehran", name="Saba", age=28)
# ترکیب آرگومانهای موقعیتی و کلیدی
introduce("Ali", city="Shiraz", age=24)
⏳ برای اجرا دکمه را بزنید...
🔹 تعداد نامعین آرگومان با *args
def sum_all(*args):
total = 0
for num in args:
total += num
return total
print(sum_all(1, 2, 3)) # 6
print(sum_all(10, 20, 30, 40)) # 100
def print_items(*items):
for item in items:
print(item, end=" ")
print()
print_items("apple", "banana", "cherry")
⏳ برای اجرا دکمه را بزنید...
🔹 آرگومانهای نامدار با **kwargs
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Saba", age=28, city="Tehran")
print("\n")
print_info(product="Laptop", price=1200, brand="Dell")
⏳ برای اجرا دکمه را بزنید...
🔹 ترکیب *args و **kwargs
def show_details(name, *args, **kwargs):
print(f"Name: {name}")
print(f"Other arguments: {args}")
print(f"Keyword arguments: {kwargs}")
show_details("Saba", 28, "Engineer", city="Tehran", country="Iran")
⏳ برای اجرا دکمه را بزنید...
🔹 بازگشت چند مقدار
def get_min_max(numbers):
return min(numbers), max(numbers)
# دریافت چند مقدار بازگشتی
min_val, max_val = get_min_max([5, 2, 8, 1, 9])
print(f"Min: {min_val}, Max: {max_val}")
⏳ برای اجرا دکمه را بزنید...
🔹 توابع تو در تو
def outer_function(text):
def inner_function():
print(text)
inner_function()
outer_function("Hello from inner function!")
# استفاده از Closure
def make_multiplier(n):
def multiplier(x):
return x * n
return multiplier
double = make_multiplier(2)
triple = make_multiplier(3)
print(double(5)) # 10
print(triple(5)) # 15
⏳ برای اجرا دکمه را بزنید...
🔹 توابع بازگشتی (Recursive)
# محاسبه فاکتوریل به صورت بازگشتی
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
print(factorial(5)) # 120
print(factorial(7)) # 5040
# دنباله فیبوناچی به صورت بازگشتی
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(10)) # 55
⏳ برای اجرا دکمه را بزنید...
🔹 مستندسازی تابع با docstring
def add(a, b):
"""
This function adds two numbers and returns the result.
Parameters:
a (int, float): First number
b (int, float): Second number
Returns:
int, float: Sum of a and b
"""
return a + b
# نمایش docstring
print(add.__doc__)
⏳ برای اجرا دکمه را بزنید...
🔹 مثال جامع: مدیریت دانشجویان
# لیست دانشجویان (هر دانشجو یک دیکشنری)
students = [
{"name": "Saba", "age": 22, "grades": [18, 19, 17]},
{"name": "Ali", "age": 24, "grades": [15, 16, 14]},
{"name": "Reza", "age": 20, "grades": [20, 19, 18]}
]
def calculate_average(grades):
"""محاسبه میانگین نمرات"""
return sum(grades) / len(grades) if grades else 0
def get_student_info(student):
"""دریافت اطلاعات یک دانشجو"""
avg = calculate_average(student["grades"])
return {
"name": student["name"],
"age": student["age"],
"average": avg,
"status": "Pass" if avg >= 15 else "Fail"
}
def print_all_students():
"""چاپ اطلاعات تمام دانشجویان"""
for student in students:
info = get_student_info(student)
print(f"{info['name']} (Age: {info['age']}) - Average: {info['average']:.2f} - {info['status']}")
# اجرا
print_all_students()
# پیدا کردن دانشجو با بالاترین میانگین
def get_top_student():
top = max(students, key=lambda s: calculate_average(s["grades"]))
return top["name"]
print(f"\nTop student: {get_top_student()}")
⏳ برای اجرا دکمه را بزنید...
📌 نکات کلیدی
- ✅ توابع با
defتعریف میشوند. - ✅ پارامترها درون
()تعریف میشوند. - ✅
returnبرای بازگرداندن مقدار استفاده میشود. - ✅ پارامترهای پیشفرض با
=مقداردهی میشوند. - ✅
*argsبرای تعداد نامعین آرگومانهای موقعیتی. - ✅
**kwargsبرای تعداد نامعین آرگومانهای کلیدی. - ✅
docstringبرای مستندسازی تابع. - ✅ توابع میتوانند تو در تو (Nested) باشند.
- ✅ توابع بازگشتی (Recursive) خود را فراخوانی میکنند.
- ✅ توابع به ماژولار شدن کد کمک میکنند.