Ответ
Лямбда-функция — это небольшая анонимная (безымянная) функция в Python, определяемая с помощью ключевого слова lambda.
Ключевые особенности:
- Синтаксис:
lambda arguments: expression. - Аргументы: Может принимать любое количество аргументов.
- Тело: Состоит только из одного выражения, результат которого неявно возвращается (явный
returnне используется). - Назначение: Используется для создания коротких, одноразовых функций там, где полноценное объявление через
defбыло бы избыточным.
Основной сценарий использования — передача функции в качестве аргумента в функции высшего порядка, такие как map(), filter() и sorted().
Сравнение с обычной функцией:
# Обычная функция
def square(x):
return x * x
# Эквивалентная лямбда-функция
square_lambda = lambda x: x * x
print(square(5)) # Вывод: 25
print(square_lambda(5)) # Вывод: 25
Практический пример (сортировка списка словарей по ключу):
points = [{'x': 2, 'y': 3}, {'x': 4, 'y': 1}]
# Сортировка по координате 'y' с помощью лямбда-функции
points.sort(key=lambda p: p['y'])
print(points) # Вывод: [{'x': 4, 'y': 1}, {'x': 2, 'y': 3}]
В этом примере лямбда-функция lambda p: p['y'] кратко и элегантно определяет правило для сортировки, не требуя объявления отдельной именованной функции.
Ответ 18+ 🔞
А, лямбды, блядь! Ну это ж просто пиздец, как удобно, если понимать, на что они годны, а не пытаться впихнуть их везде, где можно и нельзя.
Смотри, это такая, блядь, функция-одноразовка, анонимка. Безымянная, сука! Её не надо объявлять с этим ёбанным def, как нормальных людей. Просто взял и написал lambda, и всё, пиздец.
Что важно запомнить, чтобы не облажаться:
- Пишешь так:
lambda аргументы: выражение. Всё, блядь. - Аргументы: Можешь запихнуть туда сколько угодно, хоть один, хоть овердохуища.
- Тело: А вот тут — внимание, ёпта! Только ОДНО выражение. Одно, блядь! Нельзя там циклы разводить или ещё какую хуйню. Написал выражение — его результат и вернётся. Слово
returnдаже не пишется, оно само, сука, подразумевается. - Зачем это всё? Ну чтобы не городить огород с отдельной функцией, когда нужно что-то простое и быстрое, прямо на месте. Особенно их любят пихать в такие функции, как
map(),filter()илиsorted(). Там они, блядь, просто красавчики.
Смотри, как это выглядит в сравнении с обычной функцией:
# Нормальная, здоровая функция, как все
def square(x):
return x * x
# А это её ёрничающий, одноразовый брат-близнец из лямбды
square_lambda = lambda x: x * x
print(square(5)) # Вывод: 25
print(square_lambda(5)) # Вывод: 25, тот же пиздец
А вот реальный случай, где лямбда — просто хитрая жопа, которая всех выручает:
points = [{'x': 2, 'y': 3}, {'x': 4, 'y': 1}]
# Нужно отсортировать эти словарики по значению ключа 'y'.
# Вместо того чтобы писать целую отдельную функцию для одного действия...
# ...просто втыкаем лямбду прямо в аргумент `key`!
points.sort(key=lambda p: p['y'])
print(points) # Вывод: [{'x': 4, 'y': 1}, {'x': 2, 'y': 3}]
Вот видишь? lambda p: p['y']. Коротко, ясно, и не надо мозг ебать с лишними объявлениями. Красота, ёпта! Главное — не пытайся сделать из неё слона, она для простых делишек создана.