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