Функция может возвращать результат. Для этого в функции используется оператор return, после которого указывается возвращаемое значение:
def имя_функции ([параметры]): инструкции return возвращаемое_значение
Определим простейшую функцию, которая возвращает значение:
def get_message(): return "Hello METANIT.COM"
Здесь после оператора return идет строка "Hello METANIT.COM"
- это значение и будет возвращать функция
get_message()
.
Затем это результат функции можно присвоить переменной или использовать как обычное значение:
def get_message(): return "Hello METANIT.COM" message = get_message() # получаем результат функции get_message в переменную message print(message) # Hello METANIT.COM # можно напрямую передать результат функции get_message print(get_message()) # Hello METANIT.COM
После оператора return может идти и сложное вычислямое выражение, результат которого будет возвращаться из функции. Например, определим функцию, которая увеличивает число в два раза:
def double(number): return 2 * number
Здесь функция double будет возвращать результат выражения 2 * number
:
def double(number): return 2 * number result1 = double(4) # result1 = 8 result2 = double(5) # result2 = 10 print(f"result1 = {result1}") # result1 = 8 print(f"result2 = {result2}") # result2 = 10
Или другой пример - получение суммы чисел:
def sum(a, b): return a + b result = sum(4, 6) # result = 0 print(f"sum(4, 6) = {result}") # sum(4, 6) = 10 print(f"sum(3, 5) = {sum(3, 5)}") # sum(3, 5) = 8
Оператор return не только возвращает значение, но и производит выход из функции. Поэтому он должен определяться после остальных инструкций. Например:
def get_message(): return "Hello METANIT.COM" print("End of the function") print(get_message())
С точки зрения синтаксиса данная функция корректна, однако ее инструкция print("End of the function")
не имеет смысла - она никогда
не выполнится, так как до ее выполнения оператор return возвратит значение и произведет выход из функции.
Однако мы можем использовать оператор return и в таких функциях, которые не возвращают никакого значения. В этом случае после оператора return не ставится никакого возвращаемого значения. Типичная ситуация - в зависимости от опеределенных условий произвести выход из функции:
def print_person(name, age): if age > 120 or age < 1: print("Invalid age") return print(f"Name: {name} Age: {age}") print_person("Tom", 22) print_person("Bob", -102)
Здесь функция print_person
в качестве параметров принимает имя и возраст пользователя. Однако в функции вначале мы проверяем,
соответствует ли возраст некоторому диапазону (меньше 120 и больше 0). Если возраст находится вне этого диапазона,
то выводим сообщение о недопустимом возрасте и с помощью оператора return выходим из функции. После этого функция заканчивает свою работу.
Однако если возраст корректен, то выводим информацию о пользователе на консоль. Консольный вывод:
Name: Tom Age: 22 Invalid age