Как работает функция return в Python?
Оператор return возвращает значение указанное после него, например return 10 вернет 10 .
Пример 1
def example(): return 10 x = example() print(x) # Output 10
Если указано несколько значений, например return 10, ‘123’ , то вернется кортеж (10, ‘123’)
Пример 2
def example(): return 10, '123' x = example() print(x) # Output (10, '123')
Пример 3
def example(): return (10, '123') x = example() print(x) # Output (10, '123')
В случае, когда оператор return не указан в теле функции или указан без значения, тогда вернется значение None
Пример 4
def example(): return x = example() print(x) # Output
Пример 5
def example(): pass x = example() print(x) # Output
Что такое return в Python?
Оператор return используется в функциях для возвращения данных после выполнения работы самой функции.
Если функция должна обработать какие-то данные и потом вернуть их, то для возвращения этих данных необходим этот оператор. Рассмотрим все на примере:
def some_test(a, b, c): # Функция с 3 параметрами return a + b + c # Функция возвращает результат суммы чисел res = some_test(4, 6, 1) print(res)
В примере выше вызывается функция, которая считает сумму трех переданных аргументов. В конце функция возвращает это значение, поэтому мы можем записать функцию, как присвоение данных к переменной. В результате этой программы в консоль будет выведено число 11.
Комментарии (10)
Tim 11 октября 2023 в 04:48
Смотри более понятнее,
Есть два вида функций
Первый это как print() она выводит то что в ней написано и не делает что-то более, и не имеет в себе значений,
Второй вид функций это к примеру как input() она выполняет команду спросить и может хранить в себе какое-то значение, к примеру ты же не можешь в переменную запихнуть print потомучто функция print делает только действие, и не может хранит в себе какое-то значение которое может поместить в переменную, а к примеру с input когда эта функция задает тебе вопрос в консоли, то ты написав ей ответ, то в input задаётся значение то которое ты написал в ответе, и это можно использовать в переменных. Если под итожить то когда есть return в функции, то эта функция может хранить в себе какое-то значение, а если нет return, то функция выполняет какое-то действие и не более.
Tim 11 октября 2023 в 05:00
1. **Функции без `return` (подобно `print()`):**
— Они выполняют какое-то действие, но не возвращают значения, которые можно сохранить в переменной.
— Просто выводят информацию на экран или выполняют какие-то действия, но не предоставляют результат, который можно использовать далее в программе.
greet(«Анна») # Эта функция выводит приветствие, но не возвращает значение.
«`
2. **Функции с `return` (подобно `input()`):**
— Они выполняют какое-то действие, но также возвращают значение, которое можно сохранить в переменной и использовать далее.
— Возвращенное значение может быть использовано для присваивания переменным или в выражениях.
Пример:
«`python
def add(a, b):
result = a + b
return result # Эта функция возвращает сумму a и b.
sum_result = add(3, 5) # Результат функции сохраняется в sum_result.
print(sum_result) # Выведет 8
«`
Ваши пояснения о том, как функции работают, в целом верны. Функции с `return` могут хранить возвращенные значения, которые затем можно использовать в вашей программе.
дреш 05 сентября 2023 в 08:57
если человеческим языком, то вызывая функцию, ты запрашиваешь от неё ответ, возвращение значения=ответ на вызов функции
ты прописал функцию (спросил у неё)
она вернула значения (ответила)
Александр 25 июня 2023 в 12:44
Что такое функции в Python
Функция — это именованный участок кода. Иначе говоря, мы выделяем какой-то кусок нашего кода и даём ему имя.
print('Привет!') # Привет!
Функция print() выводит на экран нашу строку “Привет!”. Мы не знаем как она это делает, но мы точно знаем что именно произойдёт. Где-то далеко-далеко в питоне какой-то программист написал код этой функции, и вы пользуетесь ею даже не вникая как именно он текст выводиться в терминал.
Это самое важное свойство функций: вы можете использовать чужие функции, не вдаваясь в подробности того, как они работают внутри.
Функции нужны, чтобы логику их работы можно было использовать в разных местах программы, не переписывая код заново.
Давайте решим простую задачу: у вас есть магазин продуктов. Вы хотите продавать в нём молоко по 100 рублей за бутылку. Но при этом вы ещё должны платить 20% от стоимости проданных товаров в налоговую. Этот налог называется НДС, вы наверняка видели его в чеках. Вопрос: какую цену поставить в ценник, чтобы после уплаты налогов вы получали по 100 рублей за бутылку?
Вот фрагмент кода, который решает эту задачу:
# Хотим посчитать цену с НДС для пачки молока milk_price = 100 vat_rate = 20 # VAT — НДС, 20% — ставка НДС в России. vat = milk_price * vat_rate / 100 # Налог milk_price_with_vat = milk_price + vat # Цена с налогом print(milk_price_with_vat) # 120 рублей
А теперь вспоминаем, что в магазине помимо молока есть ещё макароны. Пишем аналогичный код для расчёта ценника макарон:
spaghetti_price = 150 vat_rate = 20 vat = spaghetti_price * vat_rate / 100 spaghetti_price_with_vat = spaghetti_price + vat print(spaghetti_price_with_vat) # 180 рублей
Для каждого товара мы повторяем одни и те же действия, и в результате получается копипаста. Это проблема:
- Если изменится размер НДС, код придётся править уже в двух местах
- Если допустили ошибку при расчёте, то её тоже придётся исправлять в двух разных местах
- Новой логики не добавляется, а кода становится больше
- Представьте сколько товаров в магазине! И для каждого нужно 5 строчек.
Функции позволяют переиспользовать уже написанный код, тем самым избавляя его от проблем, перечисленных выше. Вот как выглядит код выше, если превратить его в функцию:
def get_price_with_vat(price): vat_rate = 20 vat = price * vat_rate / 100 price_with_vat = price + vat return price_with_vat milk_price_vat = get_price_with_vat(100) # 120 spaghetti_price_vat = get_price_with_vat(150) # 180
Весь код по подсчёту цены с НДС спрятан в функцию get_price_with_vat . Остаётся только подставлять в неё разные числа и получать готовые ценники для разных товаров.
Теперь давайте посмотрим как написать свою функцию. Разберём get_price_with_vat по частям:
Сигнатура
Сигнатура функции пишется в самом начале. Она состоит из:
- Ключевого слова def , которое говорит питону о том, что здесь мы начинаем писать новую функцию.
- Названия функции.
- Параметров, иначе говоря входных данных, необходимых для работы функции.
Параметры функции позволяют применять одну и ту же логику к разным входным данным. В примере с нашей функцией — это цена товара, price . В примере выше мы подставляли цену пачки молока и пачки макарон и получали разные результаты. По сути, параметры — это переменные, которые мы заводим перед тем как написать саму функцию. Мы не можем знать заранее, какое значение придёт в функцию, поэтому мы используем переменную, которая будет хранить входное значение.
Тело функции
Здесь всё просто: это тот код, который мы хотим поместить в функцию. Обратите внимание, код тела функции мы пишем с отступом от левого края строки. В питоне принято таким образом помечать какой код относится к функции, а какой — нет. Это правило установлено на уровне языка, поэтому если отступов не сделать — программа сломается. В дальнейшем, вы ещё встретитесь с отступами. Размер одно отступа — 4 пробела.
Есть ещё один нюанс. Всё, что происходит в функции, остаётся внутри неё. Например, все переменные, которые мы создали во время работы функции, окажутся недоступны извне.
def get_price_with_vat(price): vat_rate = 20 vat = price * vat_rate / 100 price_with_vat = price + vat return price_with_vat get_price_with_vat(100) print(vat_rate) # NameError: name 'vat_rate' is not defined
И это логично, ведь нам не нужны промежуточные вычисления, важен только результат. А чтобы результат работы был доступен вне функции, его надо “вернуть”.
Возвращаемое значение
Для возврата желаемого значения во внешний мир, используется ключевое слово return :
def get_price_with_vat(price): vat_rate = 20 vat = price * vat_rate / 100 price_with_vat = price + vat return price_with_vat # price_with_vat равно 120 result = get_price_with_vat(100) print(result) # 120
На самом деле, функции всегда возвращают какое-то значение, даже если в ней не написан return . Для таких случаев, в питоне есть специальный тип данных — None , который нужен чтобы описать “тут ничего нет”. Сравните с предыдущим примером:
def get_price_with_vat(price): vat_rate = 20 vat = price * vat_rate / 100 price_with_vat = price + vat # тут удалили строку result = get_price_with_vat(100) print(result) # None
Функция len() всегда возвращает длину переданного ей параметра, а функция print() — возвращает None. Из функции можно вернуть несколько значений, для этого перечислить их все через запятую:
def get_vat_and_price_with_vat(price): vat_rate = 20 vat = price * vat_rate / 100 price_with_vat = price + vat return vat, price_with_vat vat, price = get_vat_and_price_with_vat(100) print(vat) # 20 print(price) # 120
Помимо всего прочего, return прерывает выполнение функции. Попробуйте запустить у себя код ниже:
def return_interrupt_example(): print('Это фраза всегда будет печататься на экране') somevalue = 1000 return somevalue print('А эта - никогда') return_interrupt_example()
Такое поведение позволяет программисту контролировать написанные функции и останавливать их выполнение в нужный момент.
Что ещё почитать
- Что такое функции и аргументы
- Больше функций
- Понятные названия
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Оператор return в Python: возврат значений из функции
Оператор return в Python используется для возврата значения из функции. Пользователь может использовать оператор возврата только в функции. Его нельзя использовать вне функции Python. Оператор возврата включает ключевое слово return и значение, которое будет возвращено после этого.
Синтаксис оператора возврата:
def funtion_name(): statements . . . return [expression]
def adding(x, y): i = x + y return i result = adding(16, 25) print(f'Output of adding(16, 25) function is ')
def adding(a, b): # this function is return the value of(a + b) return a + b def boolean_function(a): # this function is return the Boolean value return bool(a) # calling function flag = adding(2, 3) print("Output of first function is <>".format(flag)) flag = boolean_function(9 < 5) print("\nOutput of second function is <>".format(flag))
Возврат нескольких значений
В языке программирования Python пользователь может возвращать несколько значений из функции. Ниже приведены различные методы для этого.
1. Использование объекта: этот метод похож на C / C ++ и Java. Пользователь может создать класс для хранения нескольких значений в функции и возврата объекта этого класса.
class a: def __init__(self): self.omg = "javatpoint is the best website to learn" self.i = 122 # This function will return an object of the class a def test(): return a() # Driver code to test the above method z = test() print(z.omg) print(z.i)
2. Использование кортежа: кортеж похож на список, но есть небольшая разница между кортежем и списком. В кортеже значения объекта нельзя изменить, а в списке – можно.
def test(): omg = "javatpoint is the best website to learn" i = 122 return omg, i; # Return tuple, we could also. # Driver code to test the above method. omg, i = test() # Assign return tuple print(omg) print(i)
3. Использование списка: список аналогичен массиву динамического размера. В списке пользователь может хранить все в одной переменной.
def test(): omg = "javatpoint" i = 122 return [omg, i]; # Driver code to test the above method list = test() print(list)
4. Использование словаря. В языке Python словарь – это набор неструктурированных элементов, которые используются для хранения значений данных, таких как хэш или карта.
def test(): a = dict(); a['omg'] = "javatpoint" a['i'] = 122 return a # Driver code to test the above method a = test() print(a)
5. Использование класса данных(Python 3.7+)
from dataclasses import dataclass @dataclass class Book_list: bookname: str cost: float quantity_of_book_available: int = 0 # This function is used to calculate the total cost of the books def total_cost_of_book(self) -> float: return self.cost * self.quantity_of_book_available book = Book_list("Python programming language.", 499, 10) i = book.total_cost_of_book() # print the total cost print(i) # print the details of the book print(book)
Функция, возвращающая другую функцию
В языке программирования Python функция имеет форму объекта. Следовательно, пользователь может вернуть функцию из другой функции.
В приведенной ниже программе функция first_add возвращает функцию second_add.
def first_add(x): def second_add(y): return x + y return second_add i = first_add(20) print("The value of x + y is", i(10)) # second function def outer_func(x): return x * 5 def func(): # return the value in the different function return outer_func # storing the function in z z = func() print("\nThe value of x * y is", z(10))