В Python помимо обычных функций существуют анонимные функции, которые создаются с помощью ключевого слова lambda
. Такие функции не требуют имени и обычно используются для выполнения простых операций в тех местах, где полноценная функция была бы излишней. В этой лекции мы рассмотрим, как и когда использовать lambda
, с подробными примерами.
В Python анонимные функции создаются с помощью ключевого слова lambda
. В отличие от обычных функций, которые определяются с помощью def
и могут иметь имя, lambda
функции не имеют имени и предназначены для выполнения простых операций в одну строку.
Основной синтаксис для создания анонимной функции с помощью lambda
:
lambda аргументы: выражение
Где:
Lambda-функции полезны там, где нужно написать небольшую функцию на месте и нет необходимости давать ей имя.
Допустим, вам нужно создать функцию, которая добавляет 10 к числу:
add_ten = lambda x: x + 10
print(add_ten(5)) # 15
Пояснение:
lambda x: x + 10
создает функцию, которая принимает один аргумент x
и возвращает результат выражения x + 10
.lambda
присваиваем переменной add_ten
, так что теперь при вызове add_ten(5)
она вернет 5 + 10 = 15
.Lambda может принимать несколько аргументов. Рассмотрим пример, где нужно умножить два числа:
multiply = lambda a, b: a * b
print(multiply(3, 4)) # 12
Пояснение:
lambda a, b: a * b
создает функцию с двумя аргументами a
и b
.a * b
.multiply(3, 4)
возвращается результат умножения 3 на 4, то есть 12.Lambda может вообще не принимать аргументов. Например, можно создать функцию, которая всегда возвращает одно и то же значение:
constant = lambda: 42 print(constant()) # 42
Пояснение:
lambda: 42
создает функцию, которая всегда возвращает число 42.constant()
мы просто получаем 42.Иногда удобно использовать lambda-функции как внутренние функции. Например, когда вам нужно передать простую операцию в другую функцию:
def apply_function(func, value):
return func(value)
double = lambda x: x * 2
print(apply_function(double, 5)) # 10
Пояснение:
apply_function
принимает на вход функцию и значение, на которое нужно применить эту функцию.lambda x: x * 2
, которая удваивает значение, и передали ее как аргумент в apply_function
.apply_function(double, 5)
происходит удвоение значения 5, и выводится результат 10.Lambda-функции также могут быть полезны в комбинации с условными выражениями. Например, чтобы сделать простую функцию, которая проверяет четность числа:
is_even = lambda x: "Четное" if x % 2 == 0 else "Нечетное"
print(is_even(4)) # Четное
Пояснение:
lambda
функции. Если число делится на 2 без остатка (x % 2 == 0
), возвращается строка "Четное"
. Иначе возвращается "Нечетное"
.is_even(4)
мы получаем "Четное", а при is_even(7)
— "Нечетное".Иногда можно вернуть анонимную функцию из другой функции:
def power_function(n):
return lambda x: x ** n
square = power_function(2)
cube = power_function(3)
print(square(4)) # 16
print(cube(2)) # 8
Пояснение:
power_function
принимает число n
и возвращает lambda x: x ** n
. Это создает функцию, которая возводит число x
в степень n
.square
присваивается функция для возведения в квадрат, а переменной cube
— для возведения в куб.square(4)
возвращается 4 ** 2 = 16
, а при вызове cube(2)
— 2 ** 3 = 8
.Lambda-функции могут быть использованы для создания более сложных функциональных конструкций, таких как вложенные функции:
nested = lambda x: (lambda y: y + 1)(x) * x
print(nested(3)) # 12
Пояснение:
lambda x
создает основную функцию, которая затем внутри себя вызывает другую lambda-функцию lambda y: y + 1
с аргументом x
.y + 1
, что равно 4 (при x = 3
), а затем результат умножается на x
, и возвращается 12.Lambda-функции также могут работать с логическими операциями. Например, проверка, находится ли число в заданном диапазоне:
in_range = lambda x: 10 <= x <= 20
print(in_range(15)) # True
print(in_range(25)) # False
Пояснение:
lambda x: 10 <= x <= 20
возвращает True
, если x
находится в диапазоне от 10 до 20 включительно, и False
в противном случае.При вызове in_range(15)
результатом будет True
, так как 15 лежит в диапазоне. А при in_range(25)
результатом будет False
, так как 25 вне диапазона.
Эта таблица обобщает ограничения рекурсии и методы их оптимизации, чтобы помочь лучше понять, как можно справляться с проблемами, связанными с рекурсией.
Lambda-функции являются мощным инструментом для создания кратких и эффективных функций. Они используются в местах, где необходима быстрая обработка данных без необходимости создания полноценных именованных функций. Lambda особенно полезны, когда передаются в другие функции или применяются в условиях, циклах и вложенных выражениях.