🐍 کتابخانه مرجع پایتون

🧩 توابع (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()}")
⏳ برای اجرا دکمه را بزنید...

📌 نکات کلیدی

← قبلی: دیکشنری‌ها → بعدی: مدیریت فایل ↑ بازگشت به فهرست مقدماتی