Лямбди

Модуль 1: Python Core
Рівень 8 , Лекція 1
Відкрита

2.1 Визначення лямбда-функцій

Лямбда-функції, також відомі як анонімні функції, являють собою компактні однорядкові функції без імені, які можуть бути створені за допомогою ключового слова lambda.

На відміну від звичайних функцій, які визначаються за допомогою def, лямбда-функції створюються на льоту і зазвичай використовуються для простих операцій, які виконуються в одному рядку.

Синтаксис лямбда-функції складається з ключового слова lambda, за яким йдуть параметри, двокрапка і вираз:

 
lambda аргументи: вираз
    

Лямбда-функції можуть приймати будь-яку кількість аргументів, але можуть містити лише один вираз. Значення цього виразу автоматично повертається.

Приклади:

Лямбда-функція Звичайна функція

square = lambda x: x ** 2
print(square(5))  # Вивід: 25
                    

def square(x):
    return x ** 2
print(square(5))  # Вивід: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

2.2 Застосування лямбда-функцій

Лямбда-функції часто використовуються в поєднанні з іншими функціями, такими як map(), filter() та sorted(), а також як аргументи для інших функцій.

Використання з map()

Функція map() застосовує задану функцію до кожного елемента ітерованого об'єкта і повертає ітератор з результатами. Лямбда-функції чудово підходять для використання з map(), оскільки дозволяють лаконічно визначати функцію для перетворення елементів.


numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # Вивід: [1, 4, 9, 16, 25]
        

Використання з filter()

Функція filter() повертає ітератор, що складається з елементів ітерованого об'єкта, для яких задана функція повертає True. Лямбда-функції дозволяють швидко визначати умову для фільтрації.


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Вивід: [2, 4, 6, 8, 10]

Використання з sorted()

Функція sorted() сортує елементи ітерованого об'єкта. Лямбда-функції можуть використовуватися для визначення користувацького критерію сортування за допомогою аргументу key.


words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # Вивід: ['date', 'apple', 'banana', 'cherry']
        

Лямбда-функції у виразах

Лямбда-функції можна використовувати всередині інших виразів, таких як спискові вирази і генератори словників.


pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # Вивід: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
        

2.3 Обмеження лямбда-функцій

Лямбда-функції мають кілька обмежень у порівнянні зі звичайними функціями:

Обмеженість виразами:

Лямбда-функції можуть містити тільки один вираз і не можуть включати в себе складні оператори, такі як цикли або оператори керування потоком (наприклад, if, else тощо).

Відсутність документації:

Лямбда-функції не можуть містити рядок документації (docstring), що ускладнює документування їх функціональності.

Обмежені можливості налагодження:

Через відсутність імені і документації лямбда-функції складніше налагоджувати в порівнянні зі звичайними функціями.

Приклад обмеження лямбда-функцій

Спроба використати кілька виразів всередині лямбда-функції призведе до синтаксичної помилки:


# Цей код викличе помилку
invalid_lambda = lambda x: x ** 2; print(x)
        
    
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ