В python функции, созданные при помощи инструкции def, привязываются к имени и их дальнейший вызов происходит именно по имени. Но в python есть возможность создавать функции, которые не имеют имени - анонимные функции lambda или lambda-выражения
Формат lambda-выражения состоит из ключевого слова lambda, за которым следуют один или более аргументов (точно так же, как список аргументов в круглых скобках в заголовке инструкции def), затем, вы ставите двоеточие и записываете выражение:
lambda аргумент1, аргумент2, ... : выражение
В lambda функцию нельзя записать несколько инструкций, потому что оно должно является выражение - одной строчкой. И внутри отсутствует слово return, но оно подразумевается. И значение выражения будет возвращаться за место функции в неявном виде.
В этом примере мы создаем анонимную функцию, которая принимает один аргумент и возвращает его квадрат. При этом связываем эту функцию с именем r для дальнейшего вызова.
Здесь мы создаем функцию lambda для нахождения периметра треугольника и ассоциируем ее с именем perimetr. Она принимает три аргумента и возвращает их сумму.
Функция lambda может вообще не принимать аргументов, как в примере ниже:
Вы можете также использовать условный оператор внутри lambda функции. Но так как анонимная функция lambda представляет выражение, то есть должно записываться в одну строчку, то формат условного оператора будем немного другим.
Lambda функции полезны тогда, когда вам нужна небольшая функция и вы не хотите ее создавать при помощи инструкции def. Например, во время вызова у списков метода .sort() можно передать в параметр key функцию. Она должна возвращать значение, по которому и будет выполняться сортировка. В примере ниже наша анонимная функция возвращает последнюю цифру числа, и следовательно элементы списка отсортируются по последней цифре.