На этом шаге мы введем понятие анонимной функции.
Помимо обычных, язык Python позволяет использовать анонимные функции, которые также называются лямбда-функциями. Анонимная функция описывается с помощью ключевого слова lambda по следующей схеме:
lambda [<Параметр1>[, ..., <ПараметрN>]]: <Возвращаемое значение>
После ключевого слова lambda можно указать передаваемые параметры. В качестве параметра <Возвращаемое значение> указывается выражение, результат выполнения которого будет возвращен функцией. Как видно из схемы, у таких функций нет имени; по этой причине их и называют анонимными.
В качестве значения анонимная функция возвращает ссылку на объект-функцию, которую можно сохранить в переменной или передать в качестве параметра в другую функцию, Вызвать анонимную функцию можно, как и обычную, с помощью круглых скобок, внутри которых расположены передаваемые параметры. Пример использования анонимных функций приведен ниже:
f1 = lambda: 10 + 20 # Функция без параметров f2 = lambda x, y: x + y # Функция с двумя параметрами f3 = lambda x, y, z: x + y + z # Функция с тремя параметрами print(f1()) # Выведет: 30 print(f2(5, 10)) # Выведет: 15 print(f3(5, 10, 30)) # Выведет: 45
Как и в обычных функциях, некоторые параметры анонимных функций могут быть необязательными. Для этого параметрам в определении функции присваивается значение по умолчанию:
f = lambda x, y=2: x + y print(f(5)) # Выведет: 7 print(f(5, 6)) # Выведет: 11
Чаще всего анонимную функцию не сохраняют в переменной, а сразу передают в качестве параметра в другую функцию. Например, метод списков sort() позволяет указать пользовательскую функцию в параметре key. Отсортируем список без учета регистра символов, указав в качестве параметра функцию:
arr = ["единица1", "Единый", "Единица2"] arr.sort(key=lambda s: s.lower()) for i in arr: print(i, end=" ") # Результат выполнения: единица1 Единица2 Единый
На следующем шаге мы рассмотрим функции-генераторы.