Как написать и вызвать функцию
В прошлом уроке мы разобрались зачем нужны функции. Теперь учимся их писать.
Синтаксис
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.