Скидки до 60% и 3 курса в подарок 0 дней 00 :00 :00 Выбрать курс
Код
#статьи

Оператор return в Python: что это и как он работает

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

Иллюстрация: Оля Ежак для Skillbox Media

Эта статья для тех, кто только начинает изучать Python и уже встречал ключевое слово return в функциях. Вы можете представить функцию как повара, а return — как момент, когда тот подаёт приготовленное блюдо клиенту.

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

Содержание


Как работает 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 и использовать его для различных операций: умножать, выводить на экран или передавать в другую функцию в качестве аргумента.

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



Курс с трудоустройством: «Профессия Python-разработчик» Узнать о курсе
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована