Learnly
Python с нуля/Глава 7/Урок 2

Как написать и вызвать функцию

Как написать и вызвать функцию

В прошлом уроке мы разобрались зачем нужны функции. Теперь учимся их писать.

Синтаксис

def имя_функции(параметры):
    тело функции
    return результат
  • def, ключевое слово "define" (объявить)
  • Имя функции, правила как у переменных, snake_case
  • Параметры, данные, которые функция принимает на вход
  • return, что функция возвращает как результат

Простая функция

def greet(name):
    message = f"Привет, {name}!"
    return message

result = greet("Алекс")
print(result)   # Привет, Алекс!

# Или сразу:
print(greet("Мария"))   # Привет, Мария!

Функция без return

Если функция ничего не возвращает, просто выполняет действие:

def print_separator():
    print("=" * 40)

print_separator()   # ========================================
print("Отчёт")
print_separator()   # ========================================

Несколько параметров

def calculate_total(price, quantity, discount=0):
    subtotal = price * quantity
    return subtotal * (1 - discount)

print(calculate_total(100, 3))          # 300.0
print(calculate_total(100, 3, 0.1))     # 270.0

discount=0, значение по умолчанию. Если не передать, будет 0.

Функция может вернуть несколько значений

def min_max(numbers):
    return min(numbers), max(numbers)

low, high = min_max([3, 1, 7, 2, 9, 4])
print(f"Минимум: {low}, Максимум: {high}")
# Минимум: 1, Максимум: 9

Область видимости переменных

Переменные внутри функции "не видны" снаружи:

def calculate():
    result = 42    # локальная переменная
    return result

calculate()
print(result)    # NameError! Переменная result не существует здесь

Это хорошо, функции изолированы и не "загрязняют" общее пространство имён.

Практический пример

def analyze_grades(grades):
    if not grades:
        return "Нет оценок"

    average = sum(grades) / len(grades)
    highest = max(grades)
    lowest = min(grades)

    return {
        "average": round(average, 1),
        "highest": highest,
        "lowest": lowest,
        "count": len(grades)
    }

grades = [85, 92, 78, 95, 88, 72]
result = analyze_grades(grades)

print(f"Средняя оценка: {result['average']}")
print(f"Лучшая: {result['highest']}, Худшая: {result['lowest']}")

💡 Главная мысль: Функция принимает данные через параметры, обрабатывает их и возвращает результат через return. Называй функции глаголами: calculate_total, get_user, send_email.