Привет! Мы уже научились создавать функции, передавать им аргументы. Но настоящая сила функций — в том, что они могут возвращать результат. Именно для этого существует оператор return.
В этой статье мы разберём:
- Что такое оператор
return - Как вернуть значение из функции
- Как вернуть несколько значений
- Что происходит без
return - Когда использовать
return
- Что нужно знать перед началом
- Основная часть
- Что делает return
- Возврат одного значения
- Возврат нескольких значений
- Функции без return
- return в условиях
- return как выход из функции
- return vs print()
- Примеры из реальной жизни
- Задачи для закрепления
- Нюансы и подводные камни
- Код после return не выполняется
- return на разных уровнях вложенности
- return без значения
- Частые ошибки и как их избежать
- Ошибка 1: Забыл return для возврата значения
- Ошибка 2: Путаница между print() и return
- Ошибка 3: return в одном условии, но не в другом
- Шпаргалка
- Заключение / Выводы
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный Python
- Базовое понимание функций (статьи 1–3 в этом подменю)
Совет:
return— это то, что делает функции полезными. Функция безreturnполезна только для вывода, а сreturn— для вычислений.
Основная часть
Что делает return
return — это оператор, который:
- Возвращает значение из функции
- Прекращает выполнение функции (дальнейший код не выполняется)
def add(a, b):
return a + b # возвращает сумму
print("Это не будет выполнено")
result = add(5, 3)
print(result) # 8Возврат одного значения
def square(x):
return x ** 2
def is_even(n):
return n % 2 == 0
def double(x):
return x * 2
print(square(5)) # 25
print(is_even(6)) # True
print(double(10)) # 20Возврат нескольких значений
В Python можно вернуть несколько значений — они упаковываются в кортеж.
def get_user_info():
name = "Анна"
age = 25
city = "Москва"
return name, age, city
info = get_user_info()
print(info) # ('Анна', 25, 'Москва')
name, age, city = get_user_info() # Распаковка
print(name, age, city) # Анна 25 МоскваСовет: Возврат нескольких значений — одна из самых удобных фишек Python.
Функции без return
Если в функции нет return, она возвращает None.
def display_message(message):
print(message)
result = display_message("Привет!")
print(result) # NoneСовет: Используй
print()для вывода на экран,return— для получения результата.
return в условиях
def check_age(age):
if age >= 18:
return "Доступ разрешён"
else:
return "Доступ запрещён"
print(check_age(20)) # Доступ разрешён
print(check_age(16)) # Доступ запрещёнreturn как выход из функции
def find_first_even(numbers):
for num in numbers:
if num % 2 == 0:
return num # Выход из функции при нахождении
return None # Если чётных чисел нет
print(find_first_even([1, 3, 5, 6, 7])) # 6
print(find_first_even([1, 3, 5])) # NoneСовет:
returnв цикле часто используется для досрочного выхода.
return vs print()
return | print() |
|---|---|
| Возвращает значение из функции | Выводит значение на экран |
| Можно использовать в вычислениях | Только для отображения |
| Не показывается на экране | Показывается на экране |
def add_return(a, b):
return a + b
def add_print(a, b):
print(a + b)
result = add_return(5, 3) # result = 8 (можно использовать)
add_print(5, 3) # Вывод на экран, но result = NoneПримеры из реальной жизни
Пример 1. Калькулятор ИМТ:
def calculate_bmi(weight, height):
return weight / (height ** 2)
bmi = calculate_bmi(70, 1.75)
print(f"Ваш ИМТ: {bmi:.2f}") # 22.86Пример 2. Конвертер валют:
def usd_to_rub(usd, rate=90.0):
return usd * rate
def rub_to_usd(rub, rate=90.0):
return rub / rate
print(usd_to_rub(100)) # 9000.0
print(rub_to_usd(9000)) # 100.0Пример 3. Форматирование данных:
def format_user(name, age, city):
return f"Пользователь {name}, {age} лет, из {city}"
user_info = format_user("Анна", 25, "Москва")
print(user_info) # Пользователь Анна, 25 лет, из МоскваЗадачи для закрепления
Задача 1. Напиши функцию circle_area(radius), которая возвращает площадь круга.
Задача 2. Напиши функцию is_palindrome(text), которая возвращает True, если строка — палиндром.
Задача 3. Напиши функцию get_min_max(numbers), которая возвращает минимальное и максимальное значение из списка.
Задача 4. Напиши функцию calculate_discount(price, discount_percent), которая возвращает цену со скидкой.
Задача 5. Напиши функцию split_name(full_name), которая возвращает имя и фамилию отдельно.
Ответы:
Задача 1.
import math
def circle_area(radius):
return math.pi * radius ** 2Задача 2.
def is_palindrome(text):
text = text.lower().replace(" ", "")
return text == text[::-1]Задача 3.
def get_min_max(numbers):
return min(numbers), max(numbers)Задача 4.
def calculate_discount(price, discount_percent):
return price * (1 - discount_percent / 100)Задача 5.
def split_name(full_name):
parts = full_name.split()
if len(parts) == 2:
return parts[0], parts[1]
else:
return full_name, ""Нюансы и подводные камни
Код после return не выполняется
def func():
return 42
print("Это не будет выполнено")
print(func()) # 42return на разных уровнях вложенности
def find_element(items, target):
for item in items:
if item == target:
return True # Выход из функции
return False # Если не найденоreturn без значения
def func():
return # Вернёт None
print(func()) # NoneЧастые ошибки и как их избежать
Ошибка 1: Забыл return для возврата значения
def add(a, b):
a + b # Нет return!
result = add(5, 3)
print(result) # NoneОшибка 2: Путаница между print() и return
def add(a, b):
print(a + b) # Только вывод, нельзя использовать в вычислениях
result = add(5, 3) # result = None
print(result + 5) # TypeError!Ошибка 3: return в одном условии, но не в другом
def check_number(x):
if x > 0:
return "Положительное"
# Если x <= 0, return не сработает, вернётся NoneШпаргалка
| Что нужно | Как пишется |
|---|---|
| Вернуть значение | return value |
| Вернуть несколько значений | return a, b |
| Выйти из функции | return (без значения) |
| Использовать return в условиях | if ...: return |
| Получить результат | result = func() |
Заключение / Выводы
Сегодня мы узнали:
return— возвращает значение из функции- Можно вернуть одно или несколько значений
- Код после
returnне выполняется returnvsprint()








