Оператор return в Python: что это и как он работает
Учимся возвращать результат и управлять логикой функции.


Иллюстрация: Оля Ежак для Skillbox Media
Эта статья для тех, кто только начинает изучать Python и уже встречал ключевое слово return в функциях. Вы можете представить функцию как повара, а return — как момент, когда тот подаёт приготовленное блюдо клиенту.
У оператора return в Python есть три главные особенности: он возвращает значение, прерывает выполнение функции и позволяет использовать результат её работы. В статье мы разберём, как это работает. Рекомендуем установить Python, выбрать удобный редактор и повторять примеры за нами.
Содержание
- Как работает return при возврате значения
- Что делает функция после return
- Как использовать результат return в программе
Как работает return при возврате значения
В Python любая функция всегда что-то возвращает. Если в ней явно не указан оператор return, результатом будет специальное значение None, которое означает «ничего» или «отсутствие значения». Посмотрим на примере:
def say_hello():
print("Привет!")
print(say_hello()) # Сначала выведет «Привет!», а затем None
Функция say_hello() печатает текст, но не возвращает значения, поэтому после её вызова мы видим None. Когда добавим return, результат изменится — функция будет возвращать строку Привет!, которая и выведется на экран:
def say_hello():
return "Привет!"
print(say_hello()) # Привет!
Ещё раз: print() просто выводит что-то на экран, а return передаёт результат наружу из функции. Можно представить так: print() — это будто вы говорите ответ вслух и он сразу исчезает. А return — это как записать ответ на бумаге и передать его дальше: можно работать с этим значением, сохранять его или использовать в других вычислениях. Подробнее об этом поговорим далее.

Читайте также:
В предыдущем примере мы получили строку, однако оператор return может возвращать данные любого типа. Например, число или логическое значение:
def add(a, b):
return a + b
print(add(3, 5)) # 8
def is_even(number):
return number % 2 == 0
print(is_even(4)) # True
print(is_even(7)) # False
Иногда функции в Python могут возвращать несколько значений. В этом случае они автоматически упаковываются в кортеж — неизменяемую упорядоченную коллекцию данных, которая записывается в круглых скобках:
def get_person():
name = "Алекс"
age = 30
return name, age # Возвращаем сразу два значения
person = get_person()
print(person) # Показываем результат функции: ('Алекс', 30)
print(type(person)) # Убеждаемся, что результат — кортеж (tuple)
Работать с кортежем удобно, если функция возвращает несколько связанных результатов — например, имя и возраст пользователя или координаты точки на плоскости. Однако кортеж относится к неизменяемым структурам данных, поэтому после создания нельзя ничего добавить в него, удалить и заменить.
Поэтому, если вам нужно вернуть из функции изменяемую структуру, в return можно явно указать другой тип коллекции: список, словарь, множество или даже собственный объект класса. Давайте рассмотрим пример со списком:
def get_numbers(a, b, c):
# Возвращаем список из переданных значений
return [a, b, c]
numbers = get_numbers(10, 20, 30)
print(numbers) # [10, 20, 30]
print(type(numbers)) # <class 'list'>
numbers.append(40) # Добавляем новое число
print(numbers) # [10, 20, 30, 40]

Читайте также:
Что делает функция после return
Как только выполнение кода доходит до оператора return, срабатывает механизм выхода из функции. При этом весь последующий код в теле функции игнорируется. Посмотрим на пример с несколькими строками кода:
def example():
print("Строка 1")
return
print("Строка 2")
print("Строка 3")
example() # Строка 1
Наша функция успела выполнить только первую строку. Теперь переставим return в конец, и функция сможет выполнить все инструкции перед ним:
def example():
print("Строка 1")
print("Строка 2")
print("Строка 3")
return
example() # Строка 1
# Строка 2
# Строка 3
То есть, помимо возврата значения, оператор return позволяет точно контролировать момент завершения функции. На практике это часто применяется в условных конструкциях, где вы можете сразу прервать выполнение кода и избежать перерасхода системных ресурсов:
def check_number(num):
if num < 0:
return "Число отрицательное"
if num == 0:
return "Это ноль"
return "Число положительное"
print(check_number(-5)) # Число отрицательное
print(check_number(0)) # Это ноль
print(check_number(7)) # Число положительное
В примере выше при каждом вызове функции срабатывает только один оператор return — тот, что первым подходит под условие. Благодаря этому функция возвращает только один результат за раз, а программа не тратит время на дополнительные проверки и может сразу продолжать работу.
Как использовать результат return в программе
Внутри функции вы будете часто создавать переменные, которые существуют только в её локальной области видимости. К таким переменным нельзя обратиться за пределами функции, однако оператор return позволяет передавать вычисленное значение наружу — туда, откуда вызвана функция.
Для наглядности напишем функцию, которая будет вычислять площадь круга. Но сначала вместо return используем print() и сохраним результат:
import math
def circle_area(radius):
area = math.pi * radius ** 2
print(round(area))
result = circle_area(5)
print(result) # Сначала выведет 79, затем None
Внутри функции мы рассчитали площадь и вывели её на экран с помощью print(). Однако сама функция ничего не вернула, поэтому в переменной result оказалось значение None. Так Python ведёт себя всегда, если в коде нет оператора return. Теперь давайте его добавим и перепишем пример:
import math
def circle_area(radius):
area = math.pi * radius ** 2
return round(area)
result = circle_area(5)
print(result) # 79
print(result * 2) # 158
После добавления return мы можем сохранить возвращённое значение в переменной result и использовать его для различных операций: умножать, выводить на экран или передавать в другую функцию в качестве аргумента.

Читайте также:
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!