Что такое return в python

Функция return в Python

Оператор возврата в python используется для возврата значений из функции. Мы можем использовать оператор return только в функции. Его нельзя использовать вне функции Python.

Функция без оператора возврата

Каждая функция в Python что-то возвращает. Если функция не имеет никакого оператора возврата, она возвращает None.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Пример return

Мы можем выполнить некоторую операцию в функции и вернуть результат вызывающей стороне с помощью оператора return.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

return с выражением

У нас могут быть выражения также в операторе return. В этом случае выражение оценивается и возвращается результат.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Логическое значение

Давайте посмотрим на пример, в котором мы вернем логическое значение аргумента функции. Мы будем использовать функцию bool(), чтобы получить логическое значение объекта.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Строка

Давайте посмотрим на пример, в котором наша функция вернет строковое представление аргумента. Мы можем использовать функцию str(), чтобы получить строковое представление объекта.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Кортеж

Иногда нам нужно преобразовать несколько переменных в кортеж. Давайте посмотрим, как написать функцию для возврата кортежа из переменного числа аргументов.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Функция, возвращающая другую функцию

Мы также можем вернуть функцию из оператора return. Это похоже на Currying, которое представляет собой метод перевода оценки функции, которая принимает несколько аргументов, в оценку последовательности функций, каждая из которых имеет один аргумент.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Функция, возвращающая внешнюю функцию

Мы также можем вернуть функцию, которая определена вне функции, с помощью оператора return.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Возврат нескольких значений

Если вы хотите вернуть несколько значений из функции, вы можете вернуть объект кортежа, списка или словаря в соответствии с вашими требованиями.

Однако, если вам нужно вернуть огромное количество значений, то использование последовательности – это слишком большая операция по перегрузке ресурсов. В этом случае мы можем использовать yield, чтобы возвращать несколько значений одно за другим.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Резюме

Оператор return в python используется для возврата вывода из функции. Мы узнали, что мы также можем вернуть функцию из другой функции. Кроме того, выражения оцениваются, а затем функция возвращает результат.

Источник

Что делает return в Python?

Функция print() записывает, то есть «печатает», строку или число на консоли. Оператор return не выводит значение, которое возвращается при вызове функции. Это, однако, приводит к немедленному завершению или завершению функции, даже если это не последний оператор функции.

Во многих других языках функция, которая не возвращает значение, называется процедурой.

В данном коде значение, возвращаемое (то есть 2) при вызове функции foo(), используется в функции bar(). Эти возвращаемые значения печатаются на консоли только тогда, когда используются операторы печати, как показано ниже.

Пример

Вывод

Мы видим, что когда foo() вызывается из bar(), 2 не записывается в консоль. Вместо этого он используется для вычисления значения, возвращаемого из bar().

Пример оператора return Python

Давайте посмотрим на простой пример сложения двух чисел и возврата суммы вызывающему абоненту.

Мы можем оптимизировать функцию, указав выражение в операторе возврата.

Каждая функция что-то возвращает

Давайте посмотрим, что возвращается, когда функция не имеет оператора возврата.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Что произойдет, если в операторе ничего нет?

Когда оператор return не имеет значения, функция возвращает None.

Может иметь несколько операторов

Функция может возвращать несколько типов значений

В отличие от других языков программирования, функции Python не ограничиваются возвратом значений одного типа. Если вы посмотрите на определение функции, в нем нет никакой информации о том, что она может вернуть.

Давайте посмотрим на пример, в котором функция возвращает несколько типов значений.

Возврат нескольких значений в одном операторе

Мы можем вернуть несколько значений из одного оператора возврата. Эти значения разделяются запятой и возвращаются вызывающей программе в виде кортежа.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

С блоком finally

Как работает оператор return внутри блока try-except? Сначала выполняется код блока finally перед возвратом значения вызывающей стороне.

Если в блоке finally есть оператор return, то предыдущий оператор return игнорируется и возвращается значение из блока finally.

Источник

Оператор return в Python: возврат значений из функции

Оператор return в Python используется для возврата значения из функции. Пользователь может использовать оператор возврата только в функции. Его нельзя использовать вне функции Python. Оператор возврата включает ключевое слово return и значение, которое будет возвращено после этого.

Синтаксис оператора возврата:

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Возврат нескольких значений

В языке программирования Python пользователь может возвращать несколько значений из функции. Ниже приведены различные методы для этого.

1. Использование объекта: этот метод похож на C / C ++ и Java. Пользователь может создать класс для хранения нескольких значений в функции и возврата объекта этого класса.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

2. Использование кортежа: кортеж похож на список, но есть небольшая разница между кортежем и списком. В кортеже значения объекта нельзя изменить, а в списке – можно.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

3. Использование списка: список аналогичен массиву динамического размера. В списке пользователь может хранить все в одной переменной.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

4. Использование словаря. В языке Python словарь – это набор неструктурированных элементов, которые используются для хранения значений данных, таких как хэш или карта.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

5. Использование класса данных(Python 3.7+)

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Функция, возвращающая другую функцию

В языке программирования Python функция имеет форму объекта. Следовательно, пользователь может вернуть функцию из другой функции.

В приведенной ниже программе функция first_add возвращает функцию second_add.

Источник

Сравнение операторов yield и return в Python (с примерами)

В этой статье мы расскажем про основные различия между yield и return в Python. А для лучшего понимания этих различий приведем пару примеров.

Встроенное ключевое слово yield используется для создания функций-генераторов. (Про генераторы и их отличия от функций и списков можно подробнее прочитать здесь).

Функция, содержащая yield, может генерировать сразу несколько результатов. Она приостанавливает выполнение программы, отправляет значение результата вызывающей стороне и возобновляет выполнение с последнего yield. Кроме того, функция, содержащая yield, отправляет сгенерированную серию результатов в виде объекта-генератора.

Return также является встроенным ключевым словом в Python. Он завершает функцию, а вызывающей стороне отправляет значение.

Разница между yield и return

Начнем с того, что между yield и return есть много заметных различий. Для начала давайте обсудим их.

returnyield
Оператор return возвращает только одно значение.Оператор yield может возвращать серию результатов в виде объекта-генератора.
Return выходит из функции, а в случае цикла он закрывает цикл. Это последний оператор, который нужно разместить внутри функции.Не уничтожает локальные переменные функции. Выполнение программы приостанавливается, значение отправляется вызывающей стороне, после чего выполнение программы продолжается с последнего оператора yield.
Логически, функция должна иметь только один return.Внутри функции может быть более одного оператора yield.
Оператор return может выполняться только один раз.Оператор yield может выполняться несколько раз.
Return помещается внутри обычной функции Python.Оператор yield преобразует обычную функцию в функцию-генератор.

Пример 1

Теперь давайте рассмотрим разницу между операторами return и yield на примерах.

В приведенном ниже коде мы использовали несколько операторов возврата. Вы можете заметить, что выполнение программы прекратится уже после первого оператора return. Весь код, идущий после, не будет выполнен.

В выводе видно, что функция возвращает только первое значение, после чего программа завершается.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Чтобы выполнить аналогичную задачу с несколькими операторами return, нам нужно создать четыре разные функции для каждого типа арифметической операции.

Запустив данный код, получим следующий результат:

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Однако мы можем выполнить эти арифметические операции внутри одной функции-генератора, используя несколько операторов yield.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Пример 2

Давайте рассмотрим еще один пример использования операторов return и yield.

Создадим список чисел и передадим его в функцию mod() в качестве аргумента. Далее, внутри функции, мы проверяем каждый элемент списка. Если он делится без остатка на 10, то мы его выводим.

Для начала давайте реализуем этот пример в нашем скрипте Python с использованием оператора return.

Оператор return возвращает только первое число, кратное 10, и завершает выполнение функции.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Теперь давайте реализуем тот же пример, используя оператор yield.

Получим следующий результат:

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Заключение

В этой статье мы провели сравнение yield и return в Python, перечислили все заметные различия между ними и разобрали это на примерах.

И return, и yield являются встроенными ключевыми словами (или операторами) Python. Оператор return используется для возврата значения из функции. При этом он прекращает выполнение программы. А оператор yield создает объект-генератор и может возвращать несколько значений, не прерывая выполнение программы.

Источник

5.1. Теория¶

5.1.1. Основные понятия и механизм работы¶

5.1.1.1. Определение подпрограммы¶

Подпрограмма должна быть объявлена и в общем случае содержать:

список имен и типов передаваемых параметров (необязательно);

тип возвращаемого значения (необязательно).

5.1.1.2. Вызов подпрограммы¶

Для того, чтобы использовать ранее определенную подпрограмму, необходимо в требуемом месте кода произвести ее вызов, указав:

указать имя подпрограммы;

передать требуемые аргументы (значения параметров).

Код, вызвавший подпрограмму, передает ей управление и ожидает завершения выполнения.

Подпрограмма также может вызывать сама себя, т.е. выполняться рекурсивно.

В настоящее время наиболее часто встречаются следующие способы передачи аргументов:

Для переменной, переданной по значению создается локальная копия и любые изменения, которые происходят в теле подпрограммы с переданной переменной, на самом деле, происходят с локальной копией и никак не сказываются на самой переменной.

Изменения, которые происходят в теле подпрограммы с переменной, переданной по ссылке, происходят с самой переданной переменной.

5.1.1.3. Механизм работы¶

Большинство современных языков программирования для управления вызовом подпрограмм используют стек вызовов.

Примерный цикл работы стека вызова следующий (Видео 5.1.1, Видео 5.1.2):

Вызов подпрограммы создает запись в стеке; каждая запись может содержать информацию о данных вызова (аргументах, результате, а также адресе возврата).

Когда подпрограмма завершается, запись удаляется из стека и программа продолжает выполняться, начиная с адреса возврата.

5.1.1.4. Преимущества и недостатки¶

Преимущества использования подпрограмм:

распределение большой задачи между несколькими разработчиками или стадиями проекта;

сокрытие деталей реализации от пользователей подпрограммы;

улучшение отслеживания выполнения кода (большинство языков программирования предоставляет стек вызовов подпрограмм).

Недостатком использования подпрограмм можно считать накладные расходы на вызов подпрограммы, однако современные трансляторы стремятся оптимизировать данный процесс.

5.1.2. Функции в Python¶

Для объявления функции в Python используется ключевое слово def :

Соглашение рекомендует использовать:

змеиный_регистр (англ. snake_case) для наименования функций: my_function ;

пустые строки для отделения функций, а большие блоки кода помещать внутрь функций;

При встрече оператора return в коде Python немедленно завершает выполнение функции, аналогично break для циклических конструкций.

Пример определения и вызова функции приведен в Листинге 5.1.1 и на Рисунке 5.1.1.

Что такое return в python. Смотреть фото Что такое return в python. Смотреть картинку Что такое return в python. Картинка про Что такое return в python. Фото Что такое return в python

Python, как и многие другие языки, позволяет создавать собственные (пользовательские) функции, среди которых можно выделить четыре типа (Листинг 5.1.2):

Доступны из любой точки программного кода в том же модуле или из других модулей.

Объявляются внутри других функций и видны только внутри них: используются для создания вспомогательных функций, которые нигде больше не используются.

Не имеют имени и объявляются в месте использования. В Python и представлены лямбда-выражениями.

5.1.3. Глобальные и локальные функции¶

5.1.3.1. Параметры и аргументы¶

5.1.3.1.1. Позиционные и ключевые параметры/аргументы¶

Все параметры, указываемые в Python при объявлении и вызове функции делятся на:

позиционные: указываются простым перечислением:

ключевые: указываются перечислением ключ=значение :

Позиционные и ключевые аргументы могут быть скомбинированы. Синтаксис объявления и вызова функции зависит от типа параметра, однако позиционные параметры (и соответствующие аргументы) всегда идут перед ключевыми:

Преимущества ключевых параметров:

нет необходимости отслеживать порядок аргументов;

у ключевых параметров есть значение по умолчанию, которое можно не передавать.

Пример функции со смешанными типами параметров приведен в Листинге 5.1.3.

5.1.3.1.2. Упаковка и распаковка аргументов¶

Достичь такого поведения можно, используя механизм упаковки аргументов, указав при объявлении параметра в функции один из двух символов:

* : все позиционные аргументы начиная с этой позиции и до конца будут собраны в кортеж;

** : все ключевые аргументы начиная с этой позиции и до конца будут собраны в словарь.

Пример упаковки аргументов приведен в Листинге 5.1.4.

* : кортеж/список распаковывается как отдельные позиционные аргументы и передается в функцию;

** : словарь распаковывается как набор ключевых аргументов и передается в функцию.

Пример распаковки аргументов приведен в Листинге 5.1.5.

5.1.3.2. Область видимости¶

В Python выделяется четыре области видимости:

Локальная (англ. Local)

Нелокальная (англ. Enclosed)

Глобальная (англ. Global)

Встроенная (англ. Built-in).

«Системная» область модуля builtins : содержит предопределенные идентификаторы, например, функцию max() и т.п.

идентификатор может называться локальным, глобальным и т.д., если имеет соответствующую область видимости;

функции образуют локальную область видимости, а модули – глобальную;

чем ближе область к концу списка, тем более она открыта (ее содержимое доступно для более закрытых областей видимости; например, глобальные идентификаторы и предопределенные имена могут быть доступны в локальной области видимости функции, но не наоборот).

В Листинге 5.1.6 приведен пример четырех областей видимости.

Схема разрешения имен в языке Python называется правилом LEGB (Local, Enclosed, Global, Built-in) 6: когда внутри функции выполняется обращение к неизвестному имени, интерпретатор пытается отыскать его в четырех областях видимости по очереди до первого нахождения.

В Листингах 5.1.7 (а-д) приведены некоторые случае выполнения LEGB-правила.

По умолчанию, идентификаторы из другой области видимости доступны только для чтения, а, при попытке присвоения, функция создает локальный идентификатор.

Если необходимо изменять в функции переменные более закрытой области видимости, существует 3 способа:

использовать инструкцию global : сообщая, что функция будет изменять один или более глобальных идентификаторов;

использовать инструкцию nonlocal : сообщая, что вложенная функция будет изменять один или более идентификаторов внешних функций;

передать мутирующий аргумент в качестве параметра функции.

К изменению переменных из другой области видимости необходимо относиться крайне осторожно и прибегать только в случае крайней необходимости.

В большинстве случаев необходимо придерживаться концепции изолированного доступа через области видимости.

В связи с тем, что мутирующие аргументы могут быть изменены внутри функции, стоит аккуратно использовать их в качестве значений ключевых аргументов по умолчанию, которые создаются при инициализации функции (Листинг 5.1.11).

5.1.3.3. Возврат нескольких значений¶

Часто из функции необходимо вернуть несколько значений (например, в Паскале, для этого используются выходные параметры с ключевым словом var ). Одним из лучших способов для этого в Python является возврат кортежа с несколькими значениями (Листинг 5.1.12).

Прочие способы (например, изменение глобальных переменных) не рекомендуются 7.

5.1.3.4. Рекурсия¶

Количество вложенных вызовов функции или процедуры называется глубиной рекурсии. Рекурсивная программа позволяет описать повторяющееся или даже потенциально бесконечное вычисление, причем без явных повторений частей программы и использования циклов.

В Листинге 5.1.13 приведен пример реализации рекурсивной функции.

5.1.3.5. Строки документации¶

Соглашения по документированию функций содержатся в документе PEP 257.

В Листинге 5.1.14 приведен пример написания документации к функции.

5.1.4. Анонимные функции¶

Python поддерживает синтаксис, позволяющий определять анонимные функции (лямбда-функции или лямбда-выражения):

часть parameters является необязательной, и если она присутствует, то обычно представляет собой простой список имен переменных, разделенных запятыми (позиционных аргументов);

результатом лямбда-выражения является анонимная функция.

Пример записи лямбда-функции приведен в Листинге 5.1.15.

5.1.5. Побочный эффект¶

К побочным эффектам выполнения функции можно отнести:

изменение данных в памяти;

чтение/запись файла или устройства;

самостоятельную реакцию на исключительные ситуации;

Естественно, что полностью избежать побочных эффектов невозможно. В таких случаях необходимо локализовать участки кода с побочным эффектом в отдельные функции (Листинге 5.1.16).

Решая задачу, необходимо следить чтобы каждая проектируемая функция выполняла минимальную, логически полную задачу.

Например, если необходимо вычислить сумму и среднее значение элементов списка, правильнее будет создать 2 функции для каждого вычисления, а не одну; при этом ввод и вывод значений также оформить в виде отдельных функций.

Sebesta, W.S Concepts of Programming languages. 10E; ISBN 978-0133943023.

Саммерфилд М. Программирование на Python 3. Подробное руководство. — М.: Символ-Плюс, 2009. — 608 с.: ISBN: 978-5-93286-161-5.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *