Module (24%)
Section (9%)

Эффекты и результаты: инструкция return

Все ранее представленные функции имеют какой-то эффект - они генерируют какой-то текст и отправляют его в консоль.

Конечно, функции - как и их математические родственники - могут давать результаты.

Чтобы заставить функции возвращать значение (но не только для этой цели), вы используете инструкцию return.

Это слово дает вам полное представление о его возможностях. Примечание: это ключевое слово Python.


У инструкции return есть два разных варианта - рассмотрим их отдельно.

return без выражения

Первый состоит из самого ключевого слова, за которым ничего не следует.

При использовании внутри функции он вызывает немедленное прекращение выполнения функции и мгновенный возврат (отсюда и название) к точке вызова.

Примечание: если функция не предназначена для получения результата, использование инструкции return не обязательно - она будет выполняться неявно в конце функции.

В любом случае Вы можете использовать ее, чтобы завершить работу функции по желанию, прежде чем исполнение достигнет последней строки функции.


Рассмотрим следующую функцию:

def happy_new_year(wishes = True): print("Three...") print("Two...") print("One...") if not wishes: return print("Happy New Year!")

При вызове без аргументов:

happy_new_year()

Функция вызывает небольшой шум - результат будет выглядеть так:

Three... Two... One... Happy New Year!

вывод


Передача False в качестве аргумента:

happy_new_year(False)

изменит поведение функции - инструкция return прервет ее непосредственно перед пожеланием - это обновленный вывод:

Three... Two... One...

вывод



return с выражением

Второй вариант return расширен выражением:

def function(): return expression

Его использование может привести к двум последствиям:

  • вызывает немедленное прекращение выполнения функции (ничего нового по сравнению с первым вариантом)
  • кроме того, функция вычисляет значение выражения и возвращает его (еще раз, отсюда и название) в качестве результата функции.

Да, мы знаем - этот пример не особо сложный:

def boring_function(): return 123 x = boring_function() print("The boring_function has returned its result. It's:", x)

Код выведет в консоль следующий текст:

The boring_function has returned its result. It's: 123

Давайте разберемся с этим.

Проанализируйте картинку ниже: Assigning the value returned by function to a variable

Инструкция return, дополненная выражением (здесь выражение очень простое), "переносит" значение выражения в место, где была вызвана функция.

Результат можно использовать как угодно, например, для присвоения переменной.

Он также может быть полностью проигнорирован и потерян без следа.


Обратите внимание, мы здесь не слишком вежливы - функция возвращает значение, а мы его игнорируем (мы его никак не используем):

def boring_function(): print("'Boredom Mode' ON.") return 123 print("This lesson is interesting!") boring_function() print("This lesson is boring...")

Код выведет следующее:

This lesson is interesting! 'Boredom Mode' ON. This lesson is boring...

output


Наказуемо ли это? Нет.

Единственный минус - результат безвозвратно утерян.

Не забывайте:

  • Вам всегда разрешено игнорировать результат функции и быть удовлетворенным ее эффектом (если функция имеет таковой)
  • если функция предназначена для возврата полезного результата, она должна содержать второй вариант инструкции return.

Погодите - значит, есть и бесполезные результаты? В каком-то смысле да.