Что такое лямбда-функции в Python и в каких случаях их используют

Ответ

Лямбда-функция — это небольшая анонимная (безымянная) функция в 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']. Коротко, ясно, и не надо мозг ебать с лишними объявлениями. Красота, ёпта! Главное — не пытайся сделать из неё слона, она для простых делишек создана.