- Что делает return в Python?
- Пример
- Вывод
- Пример оператора return Python
- Каждая функция что-то возвращает
- Что произойдет, если в операторе ничего нет?
- Может иметь несколько операторов
- Функция может возвращать несколько типов значений
- Возврат нескольких значений в одном операторе
- С блоком finally
- Не работает return
- Решение
- Почему функция выводит none в Python?
- Python return statement
- Python Function without return statement
- Python Return Statement Example
- Python return statement with expression
- Python return boolean
- Python return string
- Python return tuple
- Python function returning another function
- Python function returning outer function
- Python return multiple values
- Summary
Что делает return в Python?
Функция print() записывает, то есть «печатает», строку или число на консоли. Оператор return не выводит значение, которое возвращается при вызове функции. Это, однако, приводит к немедленному завершению или завершению функции, даже если это не последний оператор функции.
Во многих других языках функция, которая не возвращает значение, называется процедурой.
В данном коде значение, возвращаемое (то есть 2) при вызове функции foo(), используется в функции bar(). Эти возвращаемые значения печатаются на консоли только тогда, когда используются операторы печати, как показано ниже.
Пример
def foo(): print("Hello from within foo") return 2 def bar(): return 10*foo() print foo() print bar()
Вывод
Hello from within foo 2 Hello from within foo 20
Мы видим, что когда foo() вызывается из bar(), 2 не записывается в консоль. Вместо этого он используется для вычисления значения, возвращаемого из bar().
Пример оператора return Python
Давайте посмотрим на простой пример сложения двух чисел и возврата суммы вызывающему абоненту.
def add(x, y): total = x + y return total
Мы можем оптимизировать функцию, указав выражение в операторе возврата.
Каждая функция что-то возвращает
Давайте посмотрим, что возвращается, когда функция не имеет оператора возврата.
>>> def foo(): . pass . >>> >>> print(foo()) None >>>
Что произойдет, если в операторе ничего нет?
Когда оператор return не имеет значения, функция возвращает None.
>>> def return_none(): . return . >>> print(return_none()) None >>>
Может иметь несколько операторов
def type_of_int(i): if i % 2 == 0: return 'even' else: return 'odd'
Функция может возвращать несколько типов значений
В отличие от других языков программирования, функции Python не ограничиваются возвратом значений одного типа. Если вы посмотрите на определение функции, в нем нет никакой информации о том, что она может вернуть.
Давайте посмотрим на пример, в котором функция возвращает несколько типов значений.
def get_demo_data(object_type): if 'str' == object_type: return 'test' elif 'tuple' == object_type: return (1, 2, 3) elif 'list' == object_type: return [1, 2, 3] elif 'dict' == object_type: return else: return None
Возврат нескольких значений в одном операторе
Мы можем вернуть несколько значений из одного оператора возврата. Эти значения разделяются запятой и возвращаются вызывающей программе в виде кортежа.
def return_multiple_values(): return 1, 2, 3 print(return_multiple_values()) print(type(return_multiple_values()))
С блоком finally
Как работает оператор return внутри блока try-except? Сначала выполняется код блока finally перед возвратом значения вызывающей стороне.
def hello(): try: return 'hello try' finally: print('finally block') def hello_new(): try: raise TypeError except TypeError as te: return 'hello except' finally: print('finally block') print(hello()) print(hello_new())
finally block hello try finally block hello except
Если в блоке finally есть оператор return, то предыдущий оператор return игнорируется и возвращается значение из блока finally.
def hello(): try: return 'hello try' finally: print('finally block') return 'hello from finally' print(hello())
finally block hello from finally
Не работает return
Решал задачу на вывод N-го элемента из последовательности Фибоначчи
Допустим мне нужно вывести на экран третий элемент последовательности
Функция дважды рекурсивно вызывается, на третий раз она доходит до «return b» (20-я строка), но вместо выхода из функции почему-то заново обрабатывается рекурсивный вызов(18-я строка).
Подскажите, по какой причине не происходит выхода из функции и присвоения переменной test значения переменной «b»
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
n = int(input("Какое число Фибоначчи вывести? ")) n = 3 # Пусть мне нужно третье число Фибоначчи num = 2 a = 0 b = 1 def Fib (n, a, b, num) : if n == 0 : return 0 elif n == 1 : return 1 else : c = b b += a a = c num += 1 if num n + 1 : Fib(n, a, b, num) else: return b test = Fib(n, a=0, b=1, num=2) print(test)
Почему не работает return?
import math y = int (input("Enter a value for y: ")) x = int (input("Enter a value for x: ")) .
Почему работает print и не работает return?
Добрый день! Помогите, пожалуйста, решить проблему. Этот код работает class Form< public.
Не работает return
Добрый день. Не понимаю почему не работает return. Если обращаюсь аргументом к массиву 1 уровня то.
Сообщение было отмечено roman_sablin как решение
Решение
С этой ошибкой часто темы создают
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
n = int(input("Какое число Фибоначчи вывести? ")) n = 3 # Пусть мне нужно третье число Фибоначчи num = 2 a = 0 b = 1 def Fib (n, a, b, num) : if n == 0 : return 0 elif n == 1 : return 1 else : c = b b += a a = c num += 1 if num n + 1 : return Fib(n, a, b, num) else: return b test = Fib(n, a=0, b=1, num=2) print(test)
Почему функция выводит none в Python?
Достаточно часто возникают вопросы: «почему моя функция ничего не возвращает?!», «почему из функции возвращается None?», «не могу понять откуда появляется None. «.
Для начала необходимо понимать и помнить, что любая функция в Python всегда что-то возвращает и если не используется оператор return для возврата значения (такие случаи бывают, но об этом позднее), то функция возвращает объект None . В случае если return используется, но после него ничего не указывается явно, то по умолчанию считается, что там стоит объект None .
# Не используем оператор return, поэтому результат не возвращается. def func(x): x * x print(func(10)) #=> None # Используем оператор return, но не задаем явное значение/используем некорректно def func(x): x * x return print(func(10)) #=> None # Корректно возвращаем результат с использованием оператора return def func(x): return x * x print(func(10)) #=> 100
Порой бывает, что по ошибке указывается возврат вместе с функцией print() . Для информации функция print() в Python выводит переданные аргументы на стандартное устройство вывода (экран), но при этом не возвращает значений, т.е. можно считать, что возвращает None .
def func(x): return print(x * x) a = 5 b = func(a) # Присваиваем результат функции переменной b # Результат работы функции выводится на экран, благодаря print() в теле функции. #=> 25 # Но при этом данный результат не присваивается переменной b. print(b) #=> None
Если дальше по коду проводятся манипуляции с переменной b, например сложение, то возникнет ошибка TypeError :
c = b + 1 # Пытаемся сложить None и 1 print(c) # => TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
Возможен вариант, когда функция и не должна ничего возвращать, она производит какие-либо действия с объектами в глобальной зоне видимости и на этом ее функционал заканчивается. В таком случае return может и не использоваться, но необходимо помнить, что в этом случае функция возвращает None .
# Бесполезная функция необходимая только в качестве примера. def extend_list(list1, list2): list1.extend(list2) list1 = [1, 2] list2 = [3, 4] print(extend_list(list1, list2)) # => None # При этом поставленную задачу функция выполнила - изменила list1 print(list1) # => [1, 2, 3, 4]
В примере выше использовался метод работы со списками extend() и необходимо понимать, что метод изменяет объект, к которому применен, а не возвращает результат изменения объекта.
list3 = extend_list(list1, list2) print(list3) # => None
Python return statement
While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
The python return statement is used to return values from the function. We can use the return statement in a function only. It can’t be used outside of a Python function.
Python Function without return statement
Every function in Python returns something. If the function doesn’t have any return statement, then it returns None .
def print_something(s): print('Printing::', s) output = print_something('Hi') print(f'A function without return statement returns ')
Output:
Python Return Statement Example
We can perform some operation in a function and return the result to the caller using the return statement.
def add(x, y): result = x + y return result output = add(5, 4) print(f'Output of add(5, 4) function is ')
Output:
Python return statement with expression
We can have expressions also in the return statement. In that case, the expression is evaluated and the result is returned.
def add(x, y): return x + y output = add(5, 4) print(f'Output of add(5, 4) function is ')
Output:
Python return boolean
Let’s look at an example where we will return the boolean value of the argument of a function. We will use bool() function to get the boolean value of the object.
def bool_value(x): return bool(x) print(f'Boolean value returned by bool_value(False) is ') print(f'Boolean value returned by bool_value(True) is ') print(f'Boolean value returned by bool_value("Python") is ')
Output:
Python return string
Let’s look at an example where our function will return the string representation of the argument. We can use the str() function to get the string representation of an object.
def str_value(s): return str(s) print(f'String value returned by str_value(False) is ') print(f'String value returned by str_value(True) is ') print(f'String value returned by str_value(10) is ')
Output:
Python return tuple
Sometimes we want to convert a number of variables into a tuple. Let’s see how to write a function to return a tuple from a variable number of arguments.
def create_tuple(*args): my_list = [] for arg in args: my_list.append(arg * 10) return tuple(my_list) t = create_tuple(1, 2, 3) print(f'Tuple returned by create_tuple(1,2,3) is ')
Output: Further Reading: Python *args and **kwargs
Python function returning another function
We can return a function also from the return statement. This is similar to Currying, which is the technique of translating the evaluation of a function that takes multiple arguments into evaluating a sequence of functions, each with a single argument.
def get_cuboid_volume(h): def volume(l, b): return l * b * h return volume volume_height_10 = get_cuboid_volume(10) cuboid_volume = volume_height_10(5, 4) print(f'Cuboid(5, 4, 10) volume is ') cuboid_volume = volume_height_10(2, 4) print(f'Cuboid(2, 4, 10) volume is ')
Output:
Python function returning outer function
def outer(x): return x * 10 def my_func(): return outer output_function = my_func() print(type(output_function)) output = output_function(5) print(f'Output is ')
Output:
Python return multiple values
If you want to return multiple values from a function, you can return tuple, list, or dictionary object as per your requirement. However, if you have to return a huge number of values then using sequence is too much resource hogging operation. We can use yield, in this case, to return multiple values one by one.
def multiply_by_five(*args): for arg in args: yield arg * 5 a = multiply_by_five(4, 5, 6, 8) print(a) # showing the values for i in a: print(i)
Output:
Summary
The python return statement is used to return the output from a function. We learned that we can also return a function from another function. Also, expressions are evaluated and then the result is returned from the function. You can checkout complete python script and more Python examples from our GitHub Repository.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases. Learn more about us