Возвращение результата
Функция может возвращать результат. Для этого в функции используется оператор 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