Определение функции

Что такое функция?

подробнее

Функция - именованный блок кода, к которому можно обратиться из другого места программы Преимущество - избегание повторов блоков кода (DRY)

Что такое lambda функция?

подробнее

Lambda функция — это анонимная функция, которая может содержать только одно выражение. Она создаётся с помощью ключевого слова lambda и часто используется для краткого определения простых функций “на лету”.
Синтаксис: lambda аргументы: выражение

# Обычная функция
def square(x):
    return x ** 2

# Lambda функция
square_lambda = lambda x: x ** 2

print(square(5))        # 25
print(square_lambda(5)) # 25

Где используется lambda функция?

подробнее
  • С функцией map()
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # [1, 4, 9, 16, 25]
  • С функцией filter()
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() и sort()
students = [('Alice', 85), ('Bob', 90), ('Charlie', 78)]
# Сортировка по оценкам
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)  # [('Charlie', 78), ('Alice', 85), ('Bob', 90)]
  • В функции reduce() (functools)
from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 120
  • В качестве callback функций
# В GUI приложениях
button.config(command=lambda: print("Кнопка нажата"))

# В обработчиках событий
event_handler = lambda event: process_event(event)
  • В list comprehensions и других конструкциях
# Хотя это не самый распространенный случай
operations = [lambda x: x+i for i in range(3)]
# Но лучше так не делать из-за замыканий

Примеры:

Пример 1: Работа со списком словарей

data = [
    {'name': 'Alice', 'age': 25},
    {'name': 'Bob', 'age': 30},
    {'name': 'Charlie', 'age': 20}
]

# Сортировка по возрасту
sorted_data = sorted(data, key=lambda person: person['age'])

Пример 2: Фильтрация и преобразование

words = ['apple', 'banana', 'cherry', 'date']
# Отфильтровать слова длиной > 5 и перевести в верхний регистр
result = list(map(lambda w: w.upper(), 
                  filter(lambda w: len(w) > 5, words)))
print(result)  # ['BANANA', 'CHERRY']

Пример 3: Создание функций “на лету”

def make_multiplier(n):
    return lambda x: x * n

double = make_multiplier(2)
triple = make_multiplier(3)

print(double(5))  # 10
print(triple(5))  # 15