Руководство для начинающих к пониманию лямбда-функций Python

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

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

Прежде чем углубляться в эти практические примеры, вы можете настроить виртуальную среду Python

, Если вы даже не хотите этого делать, вам следует хотя бы попробовать эти примеры с интерактивной онлайн-оболочкой Python.

,

Что такое лямбда в Python?

Лямбда — это просто способ определить функцию в Python. Их иногда называют «лямбда-операторами» или «лямбда-функциями».

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

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

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

Чаще всего лямбда-функции используются в коде, который требует простой однострочной функции, где было бы излишне писать полную нормальную функцию. Это более подробно описано ниже в разделе «Как насчет карты, фильтра и уменьшения?».

Как использовать Lambdas в Python

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

def add_five(number):
return number + 5
print(add_five(number=4))

как использовать функции Lamba в Python

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

Вот как это выглядит как лямбда-функция:

add_five = lambda number: number + 5
print(add_five(number=4))

как использовать функции Lamba в Python

Вместо того, чтобы использовать Защита, слово лямбда используется. Скобки не требуются, но любые слова после лямбда Ключевое слово создаются в качестве параметров. Двоеточие используется для разделения параметров и выражения. В этом случае выражение число + 5.

Там нет необходимости использовать вернуть ключевое слово — лямбда делает это автоматически.

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

add_numbers_and_five = lambda number1, number2: number1 + number2 + 5
print(add_numbers_and_five(number1=4, number2=3))

как использовать функции Lamba в Python

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

Python Lambdas с картой, фильтром и уменьшением

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

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

Вот как использовать карту без лямбды:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5
new_list = list(map(add_five, list1))
print(new_list)

как использовать функции Lamba в Python

Эта функция карты очень удобна, но может быть и лучше. add_five Функция передается в качестве аргумента, но что если вы не хотите создавать функцию каждый раз, когда используете карту? Вместо этого вы можете использовать лямбду!

Вот как выглядит тот же код, только с заменой функции на лямбду:

list1 = [2, 4, 6, 8]
print(list1)
new_list = list(map(lambda x: x + 5, list1))
print(new_list)

как использовать функции Lamba в Python

Как видите, весь add_five функция больше не требуется. Вместо этого лямбда-функция используется для поддержания порядка.

С фильтр функция, процесс почти такой же. Фильтр берет функцию и применяет ее к каждому элементу в списке и создает новый список только с теми элементами, которые заставили функцию возвращать True.

Во-первых, без лямбд

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))
print(new_numbers)

как использовать функции Lamba в Python

В этом коде нет ничего плохого, но он становится немного длиннее. Давайте посмотрим, сколько строк может удалить лямбда:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

как использовать функции Lamba в Python

Лямбда-функция заменила необходимость в целом greater_than_ten_func! И это сделано в пяти простых словах. Вот почему лямбды являются мощными: они уменьшают беспорядок для простых задач.

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

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b
result = reduce(summer, numbers)
print(result)

как использовать функции Lamba в Python

Этот пример нужно импортировать уменьшить от functools модуль, но не волнуйтесь, модуль functools является частью базовой библиотеки Python.

С лямбдой история очень похожа, функции не нужны:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
result = reduce(lambda a, b: a + b, numbers)
print(result)

как использовать функции Lamba в Python

Вещи, на которые стоит обратить внимание с Python Lambdas

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

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

Дополнительные советы можно найти в нашем руководстве по объектно-ориентированному программированию на Python.

и ознакомьтесь с нашим справочным руководством для начинающих пользователей Python

,

Ссылка на основную публикацию
Adblock
detector