Определение и вызов функции
Уроки курсаОпределение и вызов функции
Оператор return: возврат значения из функции
Функция, которую мы определяем через def, умеет не только выполнять действия, но и отдавать результат обратно в то место, откуда её вызвали. Именно для этого существует return.
Когда Python доходит до строки с return, он делает две вещи сразу: немедленно прекращает выполнение функции и передаёт указанное значение наружу. Всё, что написано в теле после return, уже не выполняется.
def square(x):
return x * x
print("эта строка никогда не выполнится")
Здесь return x * x вернёт результат умножения и выйдет из функции. Строка с print после return — мёртвый код: Python до неё просто не доберётся.
Важно понять: return — это не print. print выводит значение в консоль и забывает о нём. return передаёт значение туда, откуда вызвали функцию, и с ним можно работать дальше: сохранить в переменную, передать в другую функцию, использовать в выражении. Как именно — разберём в следующем разделе.
Что происходит, если return нет
Если тело функции не содержит return (или содержит голый return без значения), Python всё равно возвращает кое-что — специальное значение None. Это не ошибка при определении, но почти гарантированная проблема при использовании результата.
def add_without_return(a, b):
result = a + b # посчитали, но ничего не вернули
value = add_without_return(3, 5)
print(value) # None
Переменная value получит None, а не 8. Если потом попробовать использовать этот результат в арифметике, Python выбросит TypeError:
total = add_without_return(3, 5) + 10
# TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
Ошибка звучит непонятно, потому что она указывает не на отсутствующий return, а на попытку сложить None с числом. Это одна из самых частых причин путаницы у начинающих: функция «работала», что-то считала, но результат потерялся внутри, так и не выйдя наружу.
Практическое правило: если функция должна что-то вычислять и отдавать результат — return обязателен. Без него функция выполнит действие и «проглотит» результат.
