Анонимные функции: PHP: Анонимные функции — Manual

Анонимные функции в Python: лямбда-выражения

Что нужно знать начинающему веб-разработчику о лямбда-выражениях и анонимных функциях

Что нужно знать начинающему веб-разработчику о лямбда-выражениях и анонимных функциях? Скорее всего, если вы заинтересовались этой темой, вы уже знаете что значит и первое, и второе. Но для ясности мы дадим краткое определение терминам.

Анонимные функции — это функции, которым не присваивается идентификатор и которые объявляются в месте использования. Они применимы во многих языках программирования. Однако их синтаксис от языка к языку заметно разнится. Лямбда-выражение — это элемент синтаксиса, который нужен для определения анонимной функции.

Итак, мы проанализировали несколько статей на тему анонимных функций и лямбда-выражений и представим здесь их краткий адаптированный перевод или ссылки, чтобы вы сами могли выбрать те темы, которые вам интересны. За основу мы взяли статью пишущего программиста Ankit Patel, поехали!

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

Замыкание

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

Лямбда-выражение, связанное с переменной

Карринг*

*Название в честь Карри Хаскела, разработчика комбинаторной логики, в которой сведение к функциям одного аргумента носит основополагающий характер, источник — Wikipedia.

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

Ключевое слово лямбда

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

Синтаксис:

lamdba arg1,arg2, …argN: <expression>

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

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

Использование лямбда-выражений с функциями высшего порядка в Python

1. Map ()

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

Синтаксис:

map (function,inputs)

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

2. Filter ()

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

3. Reduce ()

Более подробно почитать об этих функциях можно в статье Full Stack- разработчика, Rupesh Mishra. Он рассказывает как их использовать, описывая базовый синтаксис и снабжая все это примерами.

В каких случаях нужно использовать лямбда-выражения?

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

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

Они не поддерживают строку документации, и поэтому задокументировать их функциональность крайне сложно.

Добавим, что, безусловно, работа веб-разработчика предполагает использование лямбда-выражений, но только по-настоящему хорошие веб-разработчики умеют не использовать эти инструменты там, где это не нужно. Об этом читайте в статье Monty Python. Он подробно описывает преимущества и недостатки лямбда-выражений и приводит примеры их неудачного использования.

Ну а в начале мы писали, что разные языки по-разному используют анонимные функции.

Так вот в статье Андрея Мискова об их применении в JS вы найдете подробное описание спорных моментов их использования, а также конкретные примеры для сравнения с другими языками, в том числе, Python.

Удачного вам погружения в мир разработки и Python!

Лямбда-функции и анонимные функции в Python ~ PythonRu

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

Синтаксис:

Копировать Скопировано Use a different Browser

lambda [аргументы] : выражение

Лямбда-функция может иметь ноль или более аргументов перед символом ‘:’. При вызове такой функции выполняется выражение, указанное после ‘:’.

Пример определения лямбда-функции:

Копировать Скопировано Use a different Browser

get_cube = lambda x : x ** 3

Приведенная выше лямбда-функция начинается с ключевого слова lambda, за которым следует параметр x. Выражение x ** 3 после ‘:’ возвращает вызывающему коду значение куба переданного числа. Сама лямбда-функция lambda x : x ** 3 присваивается переменной get_cube для ее последующего вызова как именованной функции. Имя переменной становится именем функции, чтобы мы могли работать с ней как с обычной функцией.

Пример вызова лямбда-функции:

Копировать Скопировано Use a different Browser

    >>> get_cube(4)
    64

Приведенное выше определение лямбда-функции аналогично следующей стандартной функции:

Копировать Скопировано Use a different Browser

    def get_cube(x):
        return x ** 3

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

Пример лямбда-функции, не возвращающей значение:

Копировать Скопировано Use a different Browser

    >>> welcome = lambda user: print('Welcome, ' + name + '!')
    >>> welcome('Anon')
    Welcome, Anon!

Примечание:

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

Следующая лямбда-функция содержит несколько параметров.

Пример лямбда-функции с тремя параметрами:

Копировать Скопировано Use a different Browser

    >>> get_prod = lambda a, b, c : a * b * c
    >>> get_prod(3, 5, 7)
    105

Также лямбда-функция может принимать любое количество параметров.

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

Лямбда-функция без параметров

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

Копировать Скопировано Use a different Browser

    >>> welcome = lambda : print('Welcome!')
    >>> welcome()
    Welcome!

Анонимная функция

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

Пример анонимной лямбда-функции:

Копировать Скопировано Use a different Browser

    >>> (lambda x: x**3)(10)
    1000

Здесь lambda x: x3 определяет анонимную функцию и вызывает ее один раз, передавая аргументы в скобках (lambda x: x3)(10).

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

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

Пример передачи лямбда-функции в качестве параметра:


Копировать Скопировано Use a different Browser

def run_task(task):
	    print('Before running the task')
	    task()
	    print('After running the task')
run_task(lambda : print('Task is complete!')) # передача анонимной функции
important_task = lambda : print('Important task is complete!') 
run_task(important_task) # передача лямбда-функции

Вывод:

Копировать Скопировано Use a different Browser

Before running the task
Task is complete!
After running the task
Before running the task
Important task is complete!
After running the task

Представленная выше функция run_task() определена с параметром task, который вызывается как функция внутри run_task(). run_task(lambda : print(‘Task is complete!’)) вызывает функцию run_task() с анонимной лямбда-функцией в качестве аргумента.

В Python есть встроенные функции, которые принимают в качестве аргументов другие функции. Функции map(), filter() и reduce() являются важными инструментами функционального программирования. Все они принимают на вход функцию. Такая функция-аргумент может быть обычной функцией или лямбда-функцией.

Пример передачи лямбда-функции в map():

Копировать Скопировано Use a different Browser

    >>> prime_cube_list = map(lambda x: x**3, [2, 3, 5, 7, 11]) # передача анонимной функции
    >>> next(prime_cube_list)
    8
    >>> next(prime_cube_list)
    27
    >>> next(prime_cube_list)
    125
    >>> next(prime_cube_list)
    343
    >>> next(prime_cube_list)
    1331

Максим

Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.

Python Q https://yandex.ru/q/loves/python Online

Python QCEO [email protected]://secure.gravatar.com/avatar/b16f253879f7349f64830c64d1da4415?s=96&d=mm&r=gCEO PythonruPythonАлександрРедакторhttps://t.me/cashncarryhttps://pythonru.com/https://yandex.ru/q/profile/cashnc/[email protected] Zabrodin2018-10-26OnlinePython, Programming, HTML, CSS, JavaScript

Популярное

Что такое анонимная функция в Python

Анонимная функция в Python — это функция, которая не имеет имени при определении. В Python ключевое слово lambda используется для определения анонимных функций, а не ключевое слово def, которое используется для обычных функций. В результате лямбда-функции — это другое название анонимных функций.

Синтаксис

Ниже приведен синтаксис лямбда-функции —

 лямбда [аргументы] : выражение
 

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

Пример: вызов лямбда-функции

Лямбда-функция начинается с ключевого слова лямбда и параметров ‘m’ и ‘n’. Значение уравнения «½ *m * n» после «:» возвращается вызывающей стороне. Чтобы сделать ее вызываемой как именованную функцию, вся лямбда-функция лямбда «m,n : 1/2 * m * n» передается переменной «треугольник». Как показано ниже, имя переменной преобразуется в имя функции, поэтому ее можно вызывать как любую другую функцию.

 # Нахождение площади треугольника
треугольник = лямбда m,n : 1/2 * m * n
рез = треугольник (34,24)
print("Площадь треугольника: ",res)
 

Вывод

Ниже приведен вывод вышеприведенного кода —

 Площадь треугольника: 408.0
 

Альтернативное решение

Ниже приведен альтернативный способ определения анонимной функции —

 def треугольник(m,n):
   возврат 1/2 * м * п
печать (треугольник (4,6))
 

Вывод

Ниже приведен вывод вышеуказанного кода —

 12. 0
 

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

 компания = лямбда имя: печать ('EdTech', имя)
компания('Учебник')
 

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

Использование лямбда-функций со встроенными функциями Python

Использование встроенных методов Python — это простой и эффективный подход к выполнению операций с лямбда-функциями. . Благодаря тому, что эти функции могут принимать лямбда-выражения в качестве аргумента и вызываться сразу, это возможно. Когда безымянная функция нужна на небольшой срок, используются лямбда-функции.

Как правило, мы используем его в качестве аргумента для функции более высокого порядка в Python (функции, которая принимает другие функции в качестве аргументов). Наряду со встроенными функциями, такими как filter(), map() и другими, используются лямбда-функции.

Использование функции filter()

Использование функции filter позволяет выбрать определенные элементы из списка элементов. Любой итератор, такой как списки, наборы, кортежи и т. д., может использоваться в качестве последовательности. Элементы, которые будут выбраны, будут зависеть от предварительно определенного ограничения. Есть два параметра —

  • Функция, задающая ограничение фильтрации

  • Серия любых итераторов, таких как списки, кортежи и т. д.

Пример

В приведенном ниже примере показано использование анонимной функции «лямбда» в функции filter(). В первой строке определяется список чисел с именем «серия». Здесь отфильтрованные значения, созданные функцией filter(), объявляются в переменной с именем «результат». Лямбда-функция, которая проверяет каждый элемент в списке и возвращает значение true, если оно больше ’29.’ используется. Затем выведите результат, который вернула функция фильтра —

 серий = [23,45,57,39,1,3,95,3,8,85]
результат = фильтр (лямбда m: m > 29, серия)
print('Все числа больше 29 в последовательности:',list(result))
 

Вывод

Ниже приведен вывод приведенного выше кода —

Все числа больше 29 в последовательности: [45, 57, 39, 95, 85]

Использование в функции map()

С каждым элементом в серии может выполняться определенная операция с использованием функции map(). Подобно функции filter(), ей требуются два параметра, то есть функция, указывающая операцию, которая должна выполняться над элементами, и одна или несколько последовательностей.

Пример

Ниже приведен пример использования анонимной функции «лямбда» в функции map() . Здесь мы определяем список, называемый серией, в котором есть несколько элементов. Мы объявляем переменную «результат», которая будет содержать отображаемые значения. Лямбда-функция, которая возвращает куб каждого числа, итеративно оцениваемого в списке. Результат функции карты затем печатается.

 # печать куба чисел, заданных в списке
серия = [23,5,1,7,45,9,38,65,3]
результат = карта (лямбда m: m*m*m, серия)
print('Куб каждого элемента в списке:',list(result))
 

Вывод

Ниже приведен вывод приведенного выше кода —

 Куб каждого элемента в списке: [12167, 125, 1, 343, 91125, 729, 54872, 274625, 27]
 

Использование в функции reduce()

Подобно функции map() , функция reduce используется для выполнения операции над каждым элементом в последовательности. Однако он работает иначе, чем карта. Функция reduce() выполняет следующие шаги, прежде чем получить вывод:

  • Применить указанную операцию к первым двум элементам последовательности.

  • Сохранить этот результат.

  • Выполнить операцию, используя ранее сохраненный результат и последующий элемент последовательности.

  • Продолжайте, пока не закончатся элементы.

Есть два дополнительных параметра —

  • Метод, определяющий действие, которое необходимо выполнить

  • Серия любых итераторов, таких как списки, кортежи и т. д.

Примечание . Функция reduce() импортирована из модуля с именем functools . Этот модуль предоставляет функции более высокого порядка, такие как reduce(), wraps(), cache() и т. д.

Пример

В следующем примере показано использование анонимной функции «лямбда» в функции reduce(). Из модуля functools импортируйте reduce() 9Функция 0088. Здесь мы определяем список под названием «серия», в котором есть несколько элементов. Мы объявляем переменную sum, которая будет содержать уменьшенное значение. Дана лямбда-функция, которая перебирает каждый элемент списка. Затем он даст вам результат суммирования этих чисел.

 # вывод суммы чисел из списка из functools
из functools импортировать уменьшить
серия = [23,5,1,7,45,9,38,65,3]
сумма = уменьшить (лямбда m,n: m+n, серия)
print('Общая сумма всех элементов в списке:',сумма)
 

Вывод

Ниже приведен вывод приведенного выше кода —

 Общая сумма всех элементов в списке: 196
 

Что такое анонимная функция в Python?

A.DivyaKeerthi

Бесплатный курс собеседования по системному проектированию

Получите полное руководство по собеседованию по системному проектированию от Educative бесплатно.

Введение:

Лямбда-функции — это однострочные функции, которые могут принимать несколько аргументов, но имеют одно выражение и возвращаемое значение.

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

  • ключевое слово: лямбда
  • аргументов перед двоеточием
  • операторы выражения/возврата после двоеточия

Lambda

  • В некоторых языках программирования анонимные функции вводятся с помощью ключевого слова lambda, а анонимные функции часто называют лямбда-выражениями или лямбда-абстракциями .
  • Анонимные функции появились в языках программирования со времен Lisp в 1958. Все больше современных языков программирования теперь поддерживают анонимные функции.
  • Лямбда-функция — это небольшая анонимная функция.
  • Лямбда-функция может принимать любое количество аргументов, но может иметь только одно выражение. Выражение оценивается и возвращается.
  • Лямбда-функции можно использовать везде, где требуются функциональные объекты.
  • Лямбда-функция использует ключевое слово лямбда

Синтаксис:

лямбда аргументы : выражение

Пример:

Добавьте 20 к аргументу ( a ) и верните результат:

 

x = лямбда a9:0a+02 )

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

Пример 1:

Умножьте аргумент x на аргумент y и верните результат:

 

s = lambda x 0 0 0 0 9 0 9 0 0 0 9 0 9 печать(ы(3, 4))

Пример 2:

Добавьте аргумент a , b и c и верните результат:

 

x = лямбда a, b, c : a + b + c

3, 7, 9))

Использование лямбда-функции в Python

Лямбда-функция обычно используется со встроенными функциями Python filter() и map() .

Оставить комментарий

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

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