Skip to content

Лямбда функции в языке Python

Лямбда функции — это анонимные функции, которые создаются с использованием ключевого слова lambda. Они могут принимать любое количество аргументов, но содержат только одно выражение. Результат этого выражения автоматически возвращается. Лямбда функции часто используются в функциональном программировании и в тех случаях, когда требуется передать функцию в качестве аргумента.

Функции без параметров

Обычная функция без параметров определяется с помощью ключевого слова def. Она может выполнять любое количество операций внутри своего тела.

python
def say_hello(): 
    return "Hello, World!"

print(say_hello())  # Выведет: Hello, World!

Лямбда функции без параметров можно использовать для создания простых анонимных функций, которые возвращают фиксированное значение.

python
say_hello_lambda = lambda: "Hello, World!"
print(say_hello_lambda())  # Выведет: Hello, World!

Упражнения

  1. Создайте лямбда функцию без параметров, которая возвращает строку "Добро пожаловать!".
  2. Напишите лямбда функцию без параметров, которая возвращает число 42.
  3. Реализуйте лямбда функцию без параметров, которая возвращает текущий год (используйте модуль datetime).
  4. Напишите лямбда функцию, которая возвращает строку "Python — это весело!" и вызовите её.

Функции с параметрами

Обычные функции с параметрами позволяют выполнять операции над входными данными и возвращать результат.

python
def multiply(x, y): 
    return x * y

print(multiply(4, 5))  # Выведет: 20

Лямбда функции с параметрами позволяют определять такие же функции, но с более компактным синтаксисом.

python
multiply_lambda = lambda x, y: x * y
print(multiply_lambda(4, 5))  # Выведет: 20

Сравнение

  • Обычная функция: Подходит для сложных операций и многоразового использования.
  • Лямбда функция: Идеальна для простых операций и случаев, когда функцию нужно передать как аргумент.

Упражнения

  1. Напишите лямбда функцию, которая принимает два числа и возвращает их сумму.
  2. Создайте лямбда функцию, которая принимает строку и возвращает её длину.
  3. Реализуйте лямбда функцию, которая принимает список чисел и возвращает их среднее значение.
  4. Напишите лямбда функцию, которая принимает два числа и возвращает большее из них.

Замыкание при использовании обычной функции с параметрами и лямбда функции с параметрами

Обычные функции и замыкание

Замыкание возникает, когда внутренняя функция запоминает переменные из области видимости внешней функции, даже если внешняя функция завершила выполнение.

python
def outer(x):
    def inner(y):
        return x + y
    return inner

closure_function = outer(10)
print(closure_function(5))      # Выведет: 15
print(closure_function(7))      # Выведет: 17

closure_function = outer
print(closure_function)         # <outer>
print(closure_function(4))      # <inner>
print(closure_function(4)(2))   # 6

print(outer)
print(outer(6))
print(outer(6)(3))

Лямбда функции и замыкание

Лямбда функции также могут создавать замыкания, сохраняя значения из области видимости, в которой они были созданы.

python
def create_adder(x):
    return lambda y: x + y

add_five = create_adder(5)
# Продолжение примера с замыканием и лямбда функцией
print(add_five(10))  # Выведет: 15

closure_function = create_adder
print(closure_function)         # <outer>
print(closure_function(4))      # lambda
print(closure_function(4)(2))   # 6

print(create_adder)
print(create_adder(6))
print(create_adder(6)(3))
python
add_five = lambda x: lambda y: x + y
# Продолжение примера с замыканием и лямбда функцией
print(add_five)         # lambda
print(add_five(5))      # lambda local lambda
print(add_five(5)(4))   # Выведет: 9

Сравнение

  • Обычная функция: Замыкания с обычными функциями могут быть более сложными, но они обеспечивают больше возможностей для включения дополнительной логики.
  • Лямбда функция: Использование замыканий с лямбда позволяет создавать краткие функции, которые сохраняют состояние.

Упражнения

  1. Создайте обычную функцию, которая возвращает другую функцию, использующую замыкание для сложения с фиксированным числом.
  2. Напишите лямбда функцию внутри обычной функции, которая возвращает произведение переданного параметра и сохранённого значения.
  3. Реализуйте лямбда функцию, которая использует замыкание для добавления префикса к строке.
  4. Создайте функцию, которая возвращает лямбда функцию для вычисления степени числа, используя замыкание.

Преимущества и недостатки лямбда функций

Преимущества

  • Компактность: Лямбда функции позволяют писать краткий и лаконичный код, что улучшает читаемость в контексте использования одной строки.
  • Гибкость: Они могут быть определены и использованы на лету, что особенно полезно в функциональном программировании.
  • Анонимность: Лямбда функции не требуют именования, что удобно, если функция используется только один раз.

Недостатки

  • Ограниченность: Лямбда функции могут содержать только одно выражение и не поддерживают многострочные операции, что ограничивает их использование в сложных сценариях.
  • Читаемость: Излишнее использование лямбда функций может ухудшить читаемость кода, особенно если логика сложна.
  • Отсутствие документации: В отличие от обычных функций, лямбда функции не поддерживают строки документации, что может затруднить понимание их назначения и использования.

Лямбда функции в Python — это мощный инструмент для создания небольших и простых функций. Они полезны в случаях, когда необходима краткость и простота, но их следует использовать с осторожностью, чтобы не ухудшать читаемость кода.

Contacts: teffal@mail.ru