Шаг 118.
Основы языка Python.
Пользовательские функции. Анонимные функции

    На этом шаге мы введем понятие анонимной функции.

    Помимо обычных, язык 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 Единый

    На следующем шаге мы рассмотрим функции-генераторы.




Предыдущий шаг Содержание Следующий шаг