Возвращение значений из функций с return

Что делает return и зачем он нужен? 🔄

Функция в Python — это не просто набор команд, а машина для преобразования данных. Ключевой инструмент здесь — return. Он делает две важные вещи:

  1. Возвращает результат работы функции (может быть любым объектом: число, список, строка и т.д.)
  2. Немедленно завершает выполнение функции

Пример без return:

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

result = greet("Анна")  # Выведет "Привет, Анна!"
print(result)  # Выведет None, потому что функция ничего не возвращает

А теперь с return:

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

message = create_greeting("Анна")  # Ничего не выводится
print(message)  # Выведет "Привет, Анна!"

Как работает return под капотом 🛠️

Когда интерпретатор встречает return:

  1. Вычисляется выражение после return
  2. Результат сохраняется в памяти
  3. Функция сразу завершается (даже если после return есть код)
  4. Значение передаётся туда, где функцию вызвали

Пример с преждевременным завершением:

def check_age(age):
    if age < 0:
        return "Ошибка: возраст не может быть отрицательным!"
    if age < 18:
        return "Доступ запрещён"
    return "Доступ разрешён"

print(check_age(25))  # "Доступ разрешён"
print(check_age(-5))  # "Ошибка: возраст не может быть отрицательным!"

Возвращаем всё: от простого к сложному 🎛️

Функция может возвращать любые типы данных:

1. Простые значения:

def square(n):
    return n * n

print(square(5))  # 25

2. Коллекции:

def create_stats(name, age):
    return {
        "name": name,
        "age": age,
        "is_adult": age >= 18
    }

print(create_stats("Мария", 20))  # {'name': 'Мария', 'age': 20, 'is_adult': True}

3. Даже другие функции! (это уже продвинутый уровень):

def create_multiplier(n):
    def multiplier(x):
        return x * n
    return multiplier

double = create_multiplier(2)
print(double(5))  # 10

Особые случаи и лайфхаки 💡

1. Возврат нескольких значений через кортеж:

def split_email(email):
    username, domain = email.split("@")
    return username, domain  # На самом деле возвращается кортеж

user, domain = split_email("test@example.com")
print(user)  # "test"

2. Пустой return — это None:

def do_nothing():
    return  # То же самое, что return None

print(do_nothing())  # None

3. Возврат vs вывод (print): — частая ошибка новичков!

# Плохо: функция только выводит результат, но не возвращает
def bad_calc(a, b):
    print(a + b)

# Хорошо: функция возвращает результат
def good_calc(a, b):
    return a + b

Практика: пишем полезные функции 🏋️♂️

Задача 1: Функция для форматирования времени

def format_time(seconds):
    hours = seconds // 3600
    minutes = (seconds % 3600) // 60
    seconds = seconds % 60
    return f"{hours:02d}:{minutes:02d}:{seconds:02d}"

print(format_time(3678))  # "01:01:18"

Задача 2: Валидатор пароля (возвращает True/False + сообщение)

def validate_password(password):
    if len(password) < 8:
        return False, "Пароль слишком короткий"
    if not any(c.isupper() for c in password):
        return False, "Добавьте хотя бы одну заглавную букву"
    return True, "Пароль надёжный"

is_valid, message = validate_password("Qwerty123")
print(is_valid, message)  # True "Пароль надёжный"

Когда использовать return vs print? 🤔

Используйте return когда:

  • Результат нужно сохранить в переменной
  • Значение будет использоваться в других вычислениях
  • Пишете библиотечные функции

Используйте print когда:

  • Нужно просто вывести информацию пользователю
  • Дебажите код (временные выводы)
  • Создаёте чисто интерактивные скрипты

Как говорит Данила Бежин в своих видео: "Функция должна делать что-то одно: либо вычислять, либо выводить. Совмещать — плохой тон" (https://www.youtube.com/@DanilaBezhin).


Главное запомнить 🧠

  1. return — это выход из функции с результатом
  2. После return код не выполняется
  3. Можно возвращать любые объекты (даже функции!)
  4. Возвращаемое значение можно присвоить переменной
  5. return без значения == return None
  6. Не путать вывод (print) с возвратом (return)

Теперь ты готов создавать функции, которые не просто выполняют код, а возвращают полезные результаты! 🎉

Скрыть рекламу навсегда

📘 VK Видео — обучение без ограничений

Все уроки доступны без VPN, без блокировок и зависаний.

Можно смотреть с телефона, планшета или компьютера — в любое время.

▶️ Смотреть на VK Видео