Лямбда-функция в Python
Пусть у нас есть функция func
,
которая параметрами принимает список и
коллбэк. Функция будет создавать новый
список из элементов исходного списка. При
этом к каждому из элементов применится
коллбэк:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Теперь создадим функцию square
,
которая будет возводить переданное ей число
в квадрат:
def square(num):
return num ** 2
Давайте передадим в параметры func
числовой список и функцию square
в
качестве коллбэка:
print( func([1, 2, 3], square) )
В консоль выведется новый список, состоящий из квадратов чисел:
[1, 4, 9]
Однако данный код можно значительно
сократить, используя лямбда-функцию
- анонимную функцию, которая вызывается с
помощью ключевого слова lambda
и
записывается в одной строке. Поэтому в
лямбда-функцию можно переписать только
функции, код которых занимает одну строку.
Синтаксис лямбда-функции выглядит вот так:
lambda параметр функции: операция с параметром функции
Давайте перепишем функцию square
с
помощью лямбда-функции и передадим ее в
параметр func
:
print( func([1, 2, 3], lambda num: num ** 2) )
Лямбда-функцию можно записать в переменную:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Перепишите следующий код через лямбда-функцию:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Перепишите следующий код через лямбда-функцию:
def func(num, clb1, clb2):
return (clb1(num), clb2(num))
def clb1(num):
return num + 1
def clb2(num):
return num - 1
print( func(2, clb1, clb2) )
Перепишите следующий код через лямбда-функцию:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))